赞
踩
首先在vmware上创建3个cenos7虚拟机,ip分别是:192.168.0.112,192.168.0.113,192.168.0.114,
搭建架构图如下:
1.在3个虚拟机上安装mysql;
2.master机器(192.168.0.112)创建复制用户设置其权限:
- mysql> create user 'repl'@'%' identified by 'Repl_123456';
- mysql> grant replication slave on *.* to 'repl'@'%';
- mysql> flush privileges;
3.配置主从数据库my.cnf
master my.cnf配置内容如下:
- [mysqld]
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
-
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- # 主从复制所需
- server_id=1
- gtid_mode=ON
- enforce-gtid-consistency=ON
- #binlog
- log_bin=master-binlog
- log-slave-updates=1
- binlog_format=row
- #relay log
- skip_slave_start=1
- max_connect_errors=1000
- default_authentication_plugin = 'mysql_native_password'
slave my.cnf配置文件如下:
- [mysqld]
- sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- # 主从复制所需
- server_id=2
- gtid_mode=ON
- enforce-gtid-consistency=ON
- # 启动每个副本 ,以确保在配置副本设置之前不会启动复制
- skip-slave-start=on
- # 指定复制的数据库
- replicate-do-db=demo
- #binlog
- log-bin=slave-binlog
- log-slave-updates=1
- binlog_format=row #强烈建议,其他格式可能造成数据不一致
-
- #relay log
- skip_slave_start=1
- default_authentication_plugin = 'mysql_native_password'
配置完成从起主从mysql:
service mysqld restart
重启后,在slave上尝试链接复制用户是否可以连接成功:
mysql -urepl -pRepl_123456 -h192.168.0.112 -P 3306
如果链接不成功,查看master防火墙是否开发3306端口号,如果未开放开放后再试
4.主从设置:
先在master机器上mysql中执行以下命令查看master状态:
mysql> show master status\G
如图,master的gtid xxxxx:1-n则设置正确
在slave的mysql中执行下面命令,设置主从关系:
- mysql> CHANGE MASTER TO
- MASTER_HOST = '192.168.0.112',
- MASTER_PORT = 3306,
- MASTER_USER = 'repl',
- MASTER_PASSWORD = 'Repl_123456',
- MASTER_AUTO_POSITION = 1;
在slave的mysql中启动slave:
mysql> start slave;
在slave的mysql中查看slave状态:
mysql> show slave status\G
如下图,出现两个yes则主从同步设置成功:
5.注意事项
a.设置过程如果出错,可以重新设置
在master的mysql中执行:reset master然后删除配置data下的binlog文件;
在slave的mysql中执行:
mysql> stop slave;
mysql> reset slave;
mysql> start slave;
b.在搭建过程master和slave机器上都应没有需要同步的库,直到搭建成功,才可以在master中创建数据库、创建表、插入数据等操作才会同步到slave库;
如果master已经存在库了,即是在原库基础上做slave横向扩展,需要先把master数据库备份,然后在新slave上导入,在配置从库同步。
c.每次停止从服务器,再次启动后,需要在slave上mysql中执行start slave,否则不会同步数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。