master node
1.主要配置
[mysqld] server-id=1 log-bin=mysql-bin binlog_format=mixed expire_logs_days=14
2.创建授权账户
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
3.记录 File 和 Position
SHOW MASTER STATUS\G;
4.由于是根据主库的 binlog 进行同步的,如果待同步的数据库已有大量数据,而此时的 binlog 并不能完全追踪出整个数据的演变过程,故需要从主库导入一份副本到从库,且在同步开始前双方数据应保持一致。
# 导出所有数据 mysqldump -uroot --all-databases --default-character-set=utf8mb4 > all.bak.sql # 只导出指定数据库 mysqldump -uroot --databases blog test --default-character-set=utf8mb4 > bak.sql
slave node
1.主要配置
[mysqld] server-id=2 log-bin=mysql-bin binlog_format=mixed expire_logs_days=14 relay_log=mysql-relay-bin # 只同步 blog 数据库 replicate-do-db=blog # 忽略所有错误 #slave_skip_errors=all
2.重置原有的从机同步
STOP SLAVE; RESET MASTER; RESET SLAVE;
3.导入主库的数据
source /data/bak.sql;
4.设置同步
CHANGE MASTER TO MASTER_HOST = '10.0.0.2', MASTER_PORT = 3306, MASTER_USER = 'slave', MASTER_PASSWORD = '123456', MASTER_LOG_FILE ='mysql-bin.000051', MASTER_LOG_POS = 652; # 启动从机复制 START SLAVE; # 查看从机 Slave_IO_Running 和 Slave_SQL_Running 状态 SHOW SLAVE STATUS\G;
相关链接:
docker mariadb:https://github.com/lanseyujie/docker-lnmp/tree/master/mariadb
mysql 常用配置说明:https://www.lanseyujie.com/post/mysql-common-configuration-instructions.html
本文标题:MySQL 主从复制
版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
上一篇:ssh 端口转发