数据库主从同步
1、赋权操作
主库登录数据库
shell>mysql -uroot -p
查询root用户
mysql>select user,host from mysql.user where user='root';
mysql>grant all privileges on *.* to 'root'@'%';
如果host有%或者从库的ip,跳过此步骤
没有执行赋权操作
mysql>create user 'root'@'%' identified by '密码';
mysql>grant all privileges on *.* to 'root'@'%';
2、记录主库File和Position
授权复制权限
mysql>grant replication slave on *.* to 'sasmgr'@'%';
查看主库File和Position
mysql>show master status;
3、从库操作
获取主库sql备份文件
shell>mysqldump --databases 库1 库2 库3 --add-drop-table --single-transaction --master-data=2 --max_allowed_packet=512M -h主库ip -P3306 -uroot -p 密码>/data/mysqldata/20250911/databases_20250911bak.sql
登录mysql执行
shell>mysql -uroot -p
输入密码后
mysql>stop slave;
l临时关闭严格模式
mysql>show variables like 'innodb_strict_mode';
mysql>set session innodb_strict_mode=OFF;
从库同步主库数据(此命令在musql中执行不能中途退出,若退出则必须执行上一步关闭严格模式的操作)
mysql>source /data/mysqldata/20250911/databases_20250911bak.sql
根据之前记录的主库File和Position更改Master_Log_File和Matser_Log_Pos
mysql>change master to master_log_file='主库File',master_log_pos=主库Position;
mysql>start slave;
3、再次验证
再次登录主库从库查询状态
登录后主库查询
shell>mysql -uroot -p
输入密码后,查看主库File和Position
mysql>show master status;
登录从库后查询从库状态
shell>mysql -uroot -p
mysql>show salve status\G;
查看主库File和Position和从库Master_Log_File和Matser_Log_Pos是否相同且有绿色的两个yes
相同且双yes,配置完毕