从库搭建
目前主库为5.7.14,从库为 5.7.44 版本
从库若没有开启binlog日志,请添加以下参数
#binlog 配置
log-bin =D:\体检文件\mysql-5.7.14-winx64\mysql-bin.log
#日志3天过期
expire-logs-days = 3
max-binlog-size = 500M
#明确指定binlog类型
binlog_format=ROW
#配置serverid ,默认使用ip地址最后一项
server-id =56
#如果发现厂商没有优化缓存参数,可以增加以下参数,根据实际需要,最大不超过物理内存的50%
innodb_buffer_pool_size=4G
不强制开启gtid参数,但如果从库需要开启的话,主库也需要开启。
复制从库端my.ini增加下面配置:
#打开级联复制日志记录
log_slave_updates=1
#从库复制忽略主键错误等常见错误
slave-skip-errors = 1007,1008,1050,1051,1054,1060,1061,1068,1094,1146,1053,1062
#需要同步的库,不指定默认同步全部库
binlog-do-db=peis
#不需要同步的库
binlog-ignore-db=operation_platform
binlog-ignore-db=follow_up
binlog-ignore-db=peis-test
binlog-ignore-db=survey
binlog-ignore-db=uims
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#这个比较重要,直接影响同步的性能 延时等问题.mysql5.7多源复制参数,5.7之前版本可不加
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#GTID模式
#gtid-mode=on
#enforce-gtid-consistency=on
#只读开关,暂时不开启
#super_read_only =on
#read_only = on
主库创建复制用户
create user 'repslave'@'%' identified by "密码";
grant replication slave on *.* to 'repslave'@'%' ;
Flush privileges;
通过mysqldump导出主库数据,示例:
mysqldump -uroot -p --databases peis -q --master-data=2 --lock-tables=false --single-transaction --set-gtid-purged=OFF --skip-triggers >e:\dbbak\peisbak202406061307.dmp
输入密码后,等待导出完成。
拿到导出文件后,需要查找日志的位置,linux可以用grep输出,或者head加grep;windows下不太好操作,可以用vscode打开,大概在前50行以内,有类似如下文字,得知信息。
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=109392
记录下具体切换的位置109392
从库导入数据,从库端口为13306,
mysql -uroot -P13306 -p < e:\dbbak\peisbak202406061307.dmp
输入密码后等待导入完成
接下来在从库上,准备启动主从复制
stop slave;
change master to master_host='源库ip', master_user='repslave' ,master_password='密码' ,master_port=3306, master_log_file='mysql-bin.000002' ,master_log_pos=109392;
start slave;
查看复制状态
show slave status;
主要看slave_io_running 和 slave_sql_running字段的状态,如果有错误,可以查看错误原因。