MySQL数据库的主从、主从从自动同步配置。
配置主从同步主要就是启用binlog日志,通过日志内容,程序自动识别并添加。
主数据库配置binlog日志。
vim /etc/my.cnf [mysqld] log_bin=teddyou server_id=51 binlog_format='mixed' #log_slave_updates 主从从, 级联复制
mysql> grant replication slave on *.* to sql52@'%' identified by 'a..A123456'; 授予权限 mysql> show master status; 查询,方便后续使用 +----------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +----------------+----------+--------------+------------------+-------------------+ | teddyou.000001 | 154 | | | | +----------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)
注意:配置从服务器必须先保证数据是一致的!
从服务器从主服务器调用主binlog日志当中的所有命令并执行。
vim /etc/my.cnf [mysqld] server_id=52 #log_slave_updates 主从从, 级联复制
拓展:
#relay_log=*** 指定中继日志文件名
#replicate_do_db=***,*** 指定进同步那些库,省略同步所有
#replicate_ignore_db=***,*** 指定不同步那些库,与上一行只能选其一种!
#replicate_do_db=*** 设置master只对那些库记录日志
#replicate_ignore_db=*** 设置master不对那些库记录日志
systemctl restart mysqld
mysql> change master to -> master_host='192.168.4.51', -> master_user='sql52', -> master_password='a..A123456', -> master_log_file='teddyou.000001', 从上面的查询获得 -> master_log_pos=154; 通过查询获得 mysql> start slave; 启动 mysql> show slave status\G; //检查IO、SQL线程,确保YES Slave_IO_Running: Yes Slave_SQL_Running: Yes
拓展,输入出错怎么办?
stop slave; 停止服务 change master to master_user='teddyou'; 哪里错了写哪里 show slave status; 查询是否为从库
取消从库配置:
删除/var/lib/mysql/下的
master.info 主库信息 relay-log.info 中继日志信息 sql52-relay-bin.index 中继日志 sql52-relay-bin.000002 索引文件
发表评论