Mysql主从同步配置
1.编辑MySQL主上的/etc/my.cnf
log-bin=master_mysql
server-id=1
- log-bin: Mysql 的bin-log的名字
- server-id:Mysql实例中全局唯一,并且大于0.
1.1 修改完配置后重启mysql使其生效
service mysql restart
2.编辑Mysql从上的/etc/my.cnf
server-id=2
- server-id : Mysql 实例中全局唯一,并且大于0。与主上的server-id 区分开
2.1 修改完配置后重启mysql,使其生效
service mysql restart
3.在Mysql主上创建用于备份账号
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
mysql> flush privileges;
4.Mysql主上枷锁,阻止所有的写入操作
mysql> FLUSH TABLES WITH READ LOCK;
5.Mysql主上,查看bin-log的文件名和位置
mysql > SHOW MASTER STATUS;
6.Mysql主上dump所有数据,
mysqldump --all-databases --master-data > dbdump.db -uroot -p
7.Mysql 主进行解锁,解锁后,主上可以写入数据
mysql> UNLOCK TABLES;
8.从库上导入之前导入的数据
mysql < dbdump.db -uroot -p
8.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从的状态
show slave status;
最后,lock all table;这个假设主库的数据非常大, 那肯定复制的过程需要花费点时间的, 但这是生产, 不可能lock all table那么久
可以使用xtrabackup工具,如https://www.cnblogs.com/gomysql/p/3650645.html