Mysql主从复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql主从复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2251字,纯文字阅读大概需要4分钟。
内容图文
主从复制
What?
主从复制,建立与主数据库(master)的副本从数据库(slave)。开启主从复制之后master会将DML,DDL等操作写入到二进制文件,slave根据二进制文件Redo日志文件的操作。
Why?
读写分离,负载均衡
在master上执行增删改,在slave上执行查。减小响应延迟,提高系统性能。
异地灾备
若master宕机,slave可以替代master提供服务。
How?
主数据库binlog线程:记录主数据库的sql语句
从数据库I/O线程:连接主数据库,请求复制主库的bin-log到从库的relay-log文件
从数据库sql线程:执行relay-log文件的sql语句
Example
- 主库修改linux下配置文件:
/etc/mysql/my.cnf
server-id = 129 #建议ip地址最后一位
log_bin = mysql-bin #生成的二进制文件的名称
binlog-do-db = repl #进行主从复制的数据库
主库日志文件位置:/var/log/mysql/mysql-bin.index
- 从库修改windows下配置文件
my.ini
server-id = 144
log-bin = repl-log
replicate-do-db = repl
配置文件的可选配置项
参数 | 意义 |
---|---|
server-id | 数据库唯一id,一组主从中此标识号不能重复。 |
log_bin | 开启bin-log,并指定文件目录和文件名前缀 |
binlog_do_db | 同步的数据库名字 |
binlog_ignore_db | 不同步的数据库名字 |
max_binlog_size | 单个bin-log最大容量 |
binlog_cache_size | 日志缓存大小 |
expire_logs_day | 设置bin-log日志文件保存的天数,(此参数mysql5.0以下版本不支持) |
binlog_format | bin-log日志文件格式,设置为MIXED可以防止主键重复。 |
- 主库新增复制账户replTest/Mysql#123
mysql> grant replication slave on *.* to ‘replTest‘@‘192.168.17.144‘ identified by ‘Mysql#123‘;
mysql> flush privileges; #刷新mysql系统权限表
- 获取主数据库的位置
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000029 | 2071 | repl | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
- 从库设置连接主库
CHANGE MASTER TO
MASTER_HOST=‘192.168.17.129‘,
MASTER_USER=‘replTest‘,
MASTER_PASSWORD=‘Mysql#123‘,
MASTER_LOG_FILE=‘mysql-bin.000029‘, #上一步的文件名
MASTER_LOG_POS=2071; #上一步的文件位置
- 开启从库,查看从库状态
start slave;
show slave status; #Slave_IO_Running和Slave_SQL_Running都是Yes表示正常
测试
主库:
CREATE TABLE `repl`.`test_db` (
`id` int NOT NULL,
`username` char(10),
`age` int,
`addr` varchar(255),
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO test_db SET id = 1,username = "kite" age = 23, addr = "广州";
INSERT INTO test_db (id, username ,age ,addr) VALUES(1,"kite",23,"广州");
查看从库
常见错误:
Slave_SQL_Running为No
错误分析:一般是slave机器重起后,事务回滚造成的。
解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;
原文:https://www.cnblogs.com/kite97/p/13449683.html
内容总结
以上是互联网集市为您收集整理的Mysql主从复制全部内容,希望文章能够帮你解决Mysql主从复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。