一、准备工作
两台CentOS7服务器,安装好Mysql(CentOS 7安装MySQL)并设置静态IP,我这里两台服务器IP地址分别设置为192.168.0.150,192.168.0.151。150作为master,151作为slave。
在MySQL主上创建数据库users,在users下面创建表user,user表有两个字段id和name,并随意插入几条记录。
二、主从同步配置
1、编辑MySQL主上的/etc/my.cnf
vim /etc/my.cnf
添加以下内容
log-bin=151_mysql
server-id=1
- log-bin :MySQL的bin-log的名字
- server-id : MySQL实例中全局唯一,并且大于0。
2、编辑MySQL从上的/etc/my.cnf
server-id=2
- server-id : MySQL实例中全局唯一,并且大于0。与主上的 server-id 区分开。
3、在MySQL主上创建用于备份账号
mysql> CREATE USER 'repl'@'%' IDENTIFIED` WITH mysql_native_password BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
4、MySQL主上加锁,阻止所有的写入操作
mysql> FLUSH TABLES WITH READ LOCK;
5、MySQL主上,查看bin-log的文件名和位置
mysql> SHOW MASTER STATUS;
前面已经设置log-bin=151_mysql,这里File还是binlog.000001,所以需要刷新一下log
mysql> flush logs;
再次执行show master status,此时File变为我们前面设定好的150_mysql
6、MySQL主上dump所有数据,用于同步现有主上的数据。注意,前面主上已经锁表,因此我们不能在主上退出mysql客户端,需重新开启一个服务器的连接来执行以下命令。执行完毕后,会生成一个dbdump.db的文件。
mysqldump --all-databases --master-data > dbdump.db -uroot -p
7、将dbdump.db文件传送到从上。
scp dbdump.db root@192.168.0.151:~
从上也有了dbdump文件
现在MySQL主可以进行解锁,解锁后,主上可以写入数据
mysql> UNLOCK TABLES;
8、MySQL从上导入之前dump的数据。注意,下面的命令不是在mysql的客户端执行的,需退出mysql的客户端。
mysql < dbdump.db -uroot -p
导入完毕之后,MySQL从上拥有了主上同样的数据
9、MySQL从上配置主从连接信息
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_PORT=port_num,
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
- master_host_name : MySQL主的地址
- port_num : MySQL主的端口(数字型)
- replication_user_name : 备份账户的用户名
- replication_password : 备份账户的密码
- recorded_log_file_name :bin-log的文件名
- recorded_log_position : bin-log的位置(数字型)
- bin-log的文件名和位置 是 步骤5中的show master status 得到的。
10、MySQL从上开启同步
mysql> START SLAVE;
查看MySQL从的状态
mysql> show slave status;
三、测试验证
在MySQL主上插入一条新数据
数据已同步到从上
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。