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          索引文件


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。