Mysql主从配置记录

官方文档:

https://dev.mysql.com/doc/refman/5.7/en/replication.html

第一步:设置主库

修改mysql配置,添加:

[mysqld]
log-bin=mysql-bin
server-id=1 //只能是正整数

重启mysql服务

查看主服务器状态:

show master status\G

第二步:开同步账号

CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';
FLUSH PRIVILEGES;

第三步:导出主库备份

mysqldump -uroot -proot --master-data=2 test_db > /root/test_db.sql

master-data参数:

导出主库当前的MASTER_LOG_FILE和MASTER_LOG_POS信息,2表示写在注释中

第四步:设置从库

[mysqld]
server-id=2 //唯一的ID

重启mysql服务

导入主库备份

USE test_db;
SOURCE /root/test_db.sql;

设置master配置

CHANGE MASTER TO 
MASTER_HOST='master_host_name',   //主库host
MASTER_USER='replication_user_name',    //上面创建的同步账号
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',    //mysqldump导出的文件中的MASTER_LOG_FILE信息
MASTER_LOG_POS=recorded_log_position;   //mysqldump导出的文件中的MASTER_LOG_POS信息`

开启slave

start slave;

查看slave状态

show slave status\G;

如果

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

两项都是yes则代表OK了

排错:

Slave_IO_Running:no

一般是主库配置不对,检查host和账号密码,账号是否有权限

Slave_SQL_Running: no

slave status的Last_SQL_Errno有报错信息

先停止slave:stop slave;

运行SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

start slave;

查看是否还有报错信息,有就再执行一遍SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;直到没有报错为止;

SQL_SLAVE_SKIP_COUNTER这个命令有待研究,执行前要看一下sql报错信息是否允许跳过;

实在不行就重新导出一份主库,把从库删了重新来一遍;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容