MySQL双主复制
2018-06-23 13:26:59来源:未知 阅读 ()
原文发表于cu:2017-06-12
本文简单介绍MySQL双主复制原理及1个简单是双主复制验证。
一.MySQL双主复制原理
1. 双主复制原理
master-master复制的两台服务器,既是master,又是另一台服务器的slave,本质上互为主从。
二.验证环境
1. 操作系统
CentOS-6.7-x86_64
2. MySQL版本
MySQL版本是5.6.36:https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.36.tar.gz
3. 拓扑图
-
采用VMware ESXi虚拟出的2台服务器master/backup,地址10.11.4.196/197;
- MySQL已安装并配置完成,可参考:http://www.cnblogs.com/netonline/p/7327409.html中的MySQL部分;
-
主从配置可参考:http://www.cnblogs.com/netonline/p/7603578.html
三.master配置
1. my.cnf配置
#在主从复制配置文件的基础上增加3个参数项 [root@master ~]# vim /etc/my.cnf [mysqld] server_id = 196 log_bin = /mysql/mysql-bin max_binlog_size = 1G sync_binlog = 0 binlog-format = mixed binlog-ignore-db = information_schema,mysql,performance_schema,test # 中继日志执行之后将变化写入自己的binlog文件,即从库从主库复制的文件默认不会写入自己的binlog文件,需要开启后才生效; # 通常此从库同时作为主库时,即链式复制时,需要开启此参数; # 默认参数为0,表示OFF, 设置为1表示ON,参数可直接带OFF或ON. log-slave-updates = 1 # 做双主时,每台数据库都可能在同一个表中插入数据,如果表有一个自动增长的主键,那么就会在多服务器上出现主键冲突;解决方案是让每个数据库的自增主键不连续; # 参数auto_increment_increment表示自增值,一般有n台主库,自增值就采用n; # auto_increment_offset表示起始序号,一般offset不超过自增值,且各主库的自增值不一样. auto_increment_increment = 2 auto_increment_offset = 1 #使用--skip-slave-start启动,可以不立即启动从库的复制线程,方便后续配置操作 [root@master ~]# service mysqld stop [root@master ~]# mysqld_safe --skip-slave-start &
2. 创建复制用户
#在主库上10.11.4.0网段的主机授权,从库用户repl获得REPLICATION SLAVE权限 [root@master ~]# mysql -uroot -p Enter password: mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.11.4.%' IDENTIFIED BY 'repl'; mysql> flush privileges;
3. 获取master binlog文件名与偏移量
[root@master ~]# mysql -uroot -p Enter password: mysql> show master status;
- 获取到binlog文件名与偏移量,可为从库设定同步复制点。
4. iptables
[root@master ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@master ~]# service iptables restart
四.backup配置
1. my.cnf配置
#将主库服务器上的my.cnf文件拷贝到从库服务器 [root@master ~]# scp /usr/local/mysql/my.cnf backup:/usr/local/mysql/ root@backup's password: #修改server id值与主库服务器不同; #auto_increment_offset参数,各服务器的offset值应不一样 [root@backup ~]# vim /etc/my.cnf [mysqld] server_id = 197 auto_increment_increment = 2 auto_increment_offset = 2 #使用--skip-slave-start启动,可以不立即启动从库的复制线程,方便后续配置操作 [root@backup ~]# service mysqld stop [root@backup ~]# mysqld_safe --skip-slave-start &
2. 创建复制用户
#在主库上10.11.4.0网段的主机授权,从库用户repl获得REPLICATION SLAVE权限 [root@backup ~]# mysql -uroot -p Enter password: mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.11.4.%' IDENTIFIED BY 'repl'; mysql> flush privileges;
3. 获取master(backup节点) binlog文件名与偏移量
[root@backup ~]# mysql -uroot -p Enter password: mysql> show master status;
- 获取到binlog文件名与偏移量,可为从库设定同步复制点。
4. iptables
[root@backup ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@backup ~]# service iptables restart
五.同步复制
1. master配置同步复制
#配置从库向主库提交的参数,如果参数有错误,可以重新配置; # master-host、master-user、master-password、master-port等也可在my.cnf文件中指定; #”start slave“启动复制 [root@master ~]# mysql -uroot -p Enter password: mysql> change master to master_host = '10.11.4.197', master_user = 'repl', master_password = 'repl', master_log_file = 'mysql-bin.000009', master_log_pos = 1306; mysql> start slave;
2. backup配置同步复制
[root@backup ~]# mysql -uroot -p Enter password: mysql> change master to master_host = '10.11.4.196', master_user = 'repl', master_password = 'repl', master_log_file = 'mysql-bin.000003', master_log_pos = 2462; mysql> start slave;
六.验证
1. 查看线程
1)master服务器
[root@master ~]# mysql -uroot -p Enter password: mysql> show processlist;
- master服务器做为主库的binlog dump线程已由backup服务器从库的repl用户启动;
- master服务器做为从库的I/0线程与SQL线程由系统用户启动。
2)backup服务器
[root@backup ~]# mysql -uroot -p Enter password: mysql> show processlist;
- backup服务器做为主库的binlog dump线程已由master服务器从库的repl用户启动;
- backup服务器做为从库的I/0线程与SQL线程由系统用户启动。
2. 查看从库状态
1)master服务器
[root@master ~]# mysql -uroot -p Enter password: mysql> show slave status\G;
- 重点关注Slave_IO_Running与Slave_SQL_Running,状态均为YES时正常。
2)backup服务器
[root@backup ~]# mysql -uroot -p Enter password: mysql> show slave status\G;
3. 查看新建数据数据库同步情况
1)在master服务器新建数据库与表
[root@master ~]# mysql -uroot -p Enter password: mysql> create database dbtest2; mysql> use dbtest2; mysql> create table tabtest2(id int); mysql> insert into tabtest2() values(1),(2);
2)在backup服务器查看数据库与表
[root@backup ~]# mysql -uroot -p Enter password:
(1)查看数据库
mysql> show databases;
(2)查询表
mysql> select * from dbtest2.tabtest2;
3)在backup服务器修改数据表
[root@backup ~]# mysql -uroot -p Enter password: mysql> use dbtest2; mysql> insert into tabtest2() values(3),(4);
4)在master服务器查看修改后的数据表
[root@master ~]# mysql -uroot -p Enter password: mysql> select * from dbtest2.tabtest2;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash