MySQL主从配置就是一台主服务器和一台备份从服务器了,从服务器会实时备份主服务器上更新修改或删除的数据了,下面我们一起来看配置方法.
mysql replication 主要通过复制二进制日志,在slave上执行master一样的来SQL来保持master 和slave的数据一致.
好处不必多说,第一个 master-slave的结构首先能实现读写分离,对于缓解数据库Server的鸭梨会起到一定好处,另外当master宕机的话,可以马上切到slave上边,可以提高系统的可用性.
1.mysql 的主从复制是通过 bin log来实现的,首先master要开启二进制日志,代码如下:
- server-id=1
- log_bin=/var/log/mysql/mysql-bin.log
- binlog_ignore_db=mysql
2.master 上要开一个专供复制的账号
grant file,select,replication slave on *.* to slave@'%' identified by '123456'; --我这里是有问题的,开了权限给所有的库 所有的机器,而且还设置了弱密码,不过做为测试机玩玩也未必不可.
3.slave 机器 设置一个 server-id
server-id = 2
4.设置复制信息
这里要先看一下当前 master 的binlog 记到哪里了,从哪个文件开始的哪一个位置,然后设置slave从这个地方开始复制,所以这个时候要保证 master 和 slave的数据是一样的,这样才能保证master和slave数据的一致性.
先在master端执行:show master status;代码如下:
- mysql>showmasterstatus;
- +------------------+----------+--------------+------------------+
- |File|Position|Binlog_Do_DB|Binlog_Ignore_DB|
- +------------------+----------+--------------+------------------+
- |mysql-bin.000015|26560211||mysql|
- +------------------+----------+--------------+------------------+
- 1rowinset(0.00sec)--phpfensi.com
得到当前的二进制日志文件和当前的位置,在 slave 端执行如下代码:
- changemastertomaster_host='192.168.57.64',
- master_user='slave',
- master_password='123456',
- master_log_file='mysql-bin.000015',
- master_log_pos=26560211;
最后 slave端 start slave;用 show slave status\G; 查看参数 Slave_IO_Running 和 Slave_SQL_Running,如果两个参数都是 yes,说明搞定.