主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。
对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。
MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库自带的 二进制日志 功能。就是一台或多台MySQL数据库 从另一台MySQL数据库进行日志的复制,然后再解析日志并应用到自身,最终实现 从库 的数据和 主库 的数据保持一致。MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具。
1、主服务器配置
[mysqld] ... log_bin=mysql-bin binlog_format=mixed server_id=1 expire_logs_days=10 gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON ##不同步的数据库,可设置多个 #binlog-ignore-db=information_schema #binlog-ignore-db=performance_schema #binlog-ignore-db=mysql ##设置需要复制的数据库,默认全部记录 #binlog-do-db=test
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY 'Slave@2022'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; flush privileges; SHOW MASTER STATUS;
2、从服务器配置
[mysqld] ... #log_bin=mysql-bin #binlog_format=mixed server_id=2 expire_logs_days=10 gtid_mode=ON enforce_gtid_consistency=ON log_slave_updates=ON slave_skip_errors=all ##不同步的数据库,可设置多个,要和主服务器一致 #replicate-ignore-db=information_schema #replicate-ignore-db=performance_schema #replicate-ignore-db=mysql ##设置需要复制的数据库,默认全部记录 #replicate-do-db=test #slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误 #slave-skip-errors=all #跳过所有错误
##配置同步,注意 master_log_file 和 master_log_pos 的值要与Master查询的一致 change master to master_host='10.0.0.100',master_port=3306,master_user='slave',master_password='Slave@2022',master_log_file='mysql-bin.000002',master_log_pos=519; ##启动同步,如有报错执行 reset slave; start slave; # stop slave; ##查看 Slave 状态 show slave status\G; ##确保 IO 和 SQL 线程都是 Yes,代表同步正常。 Slave_IO_Running: Yes #负责与主机的io通信 Slave_SQL_Running: Yes #负责自己的slave mysql进程
注意:最好在创建数据库之前配置主从同步,发送给主服务器的SQL会同时发送给从服务器,数据库不存在或数据不一致时再配置主从同步肯定会出错的。
本文链接:https://www.xinac.com/article/767.html
原文链接:https://www.xinac.net/9281.html
本文作者为新逸Cary,转载请注明。