MYSQL主从库同步,创建2个以上的MySQL数据库
1、修改主库my.cnf
log-bin = mysql-bin #开启mysql的binlog日志功能
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7 #binlog过期清理时间
max_binlog_size = 100m #binlog每个日志文件大小
binlog_cache_size = 4m #binlog缓存大小
max_binlog_cache_size= 512m #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
auto-increment-offset = 1 # 自增值的偏移量
auto-increment-increment = 1 # 自增值的自增量
slave-skip-errors = all #跳过从库错误
2、创建可复制的用户并授权
CREATE USER repl_user IDENTIFIED BY 'repl_root';
CREATE USER 'repl_user'@'192.168.0.136' IDENTIFIED BY 'repl_root';
授权
grant replication slave on *.* to 'repl_user'@'%';
grant replication slave on *.* to 'repl_user'@'192.168.0.136';
FLUSH PRIVILEGES;
3、重要:修改主库的repl_user的plugin
alter user 'repl_user'@'%' identified with mysql_native_password by 'repl_root';
alter user 'repl_user'@'' identified with mysql_native_password by 'repl_root';
二、配置从库
1、修改从库的配置文件
[mysqld]
server-id = 2
log-bin=mysql-bin
relay-log = mysql-relay-bin
##不同步的库表
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
##其他不同步的自己加上
2、进入从库mysql,修改从库连接到的主库信息
change master to
master_host='主库地址',
master_user='上面配置的用户',
master_password='上面配置的密码',
master_port=3306,
master_log_file='主库最新的logbin日志',#在主库中输入show master status即可获得
master_log_pos=主库最新的position,#用上面的命令可以获得
master_retry_count=60,#连接失败重试次数
master_heartbeat_period=10000;
最后在你从库的mysql输入命令 show slave status \G,如果Slave_IO_Running
和Slave_SQL_Running
都为yes则代表主从同步设置成功。