主机器[master]配置
首先,不同系统或者环境差异下,mysql数据库的配置文件所在路径不同。
linux一般是:/etc/my.cnf
windows系wamp:E:\wamp\bin\mysql\mysql5.6.17\my.ini
win的直接notepad++打开,linux用 vi 或者 vim 命令。
【注意下面这个在主机器上面执行,不是备份机,切换主机器窗口哈。】
- vim /etc/my.cnf
打开后,按下 / 按键,输入关键词“mysql-bin”或者“server-id”回车即可定位到要配置的地方。
- # Replication Master Server (default)
- # binary logging is required for replication
- log-bin=mysql-bin
- # binary logging format - mixed recommended
- binlog_format=mixed
- # required unique id between 1 and 2^32 - 1
- # defaults to 1 if master-host is not set
- # but will not function as a master if omitted
- server-id = 1
正常来说第3,6,11三行配置都是有的,这里主机器的server-id 不修改,备份机器则要改为2,如果多台,就以此类推的3456,每一台不一样即可。
- # 只读配置,不影响super用户和replication
- read-only = 0
- # binlog-do-db是设置备份白名单
- binlog-do-db = text
- # 多少机器设置多少,如果主从总共两台设置2,不小于2.
- auto-increment-increment = 2
- # 这一台是第几台,同server-id 的数字一样即可。
- auto-increment-offset = 1
上面这里binlog-do-db是写需要热备的数据库名,如果有多个写多几个,一行一个哈。如果想用忽略名单类型的,用下面这个:
- read-only = 0
- binlog-ignore-db = mysql
- binlog-ignore-db = information_schema
- binlog-ignore-db = performance_schema
- auto-increment-increment = 2
- auto-increment-offset = 1
auto-increment-increment 是ID累加的时候,增量多少,一般是累加1,但是这样容易引起ID重复冲突,所以这里设置2,如果主从总共有5台,这里设置5,以此类推。
auto-increment-offset 是表示序号的,这里和server-id 设置一样,设置1。这里提醒下,如果要做双主热备的话,备份机器的这一个参数和server-id 都写2。如果是5台,另外3台分别是3,4,5这样子。
编辑方法:光标移动要修改的位置-->按下“insert”-->编辑后按下“ESC”-->shift+Q-->wq-->回车
然后重启mysql服务。
- # linux输入
- service mysql restart
- # linux下的lnmp可以用上面也可以用
- lnmp restart
- # windows根据相应环境操作,或者面板操作。
查看master机器状态
- #在主机器上,登陆mysql
- mysql -uroot -p
- # 回车输入密码,然后输入如下指令
- mysql> show master status\G
- # 即可查看状态。记录状态 File 和 Position 的值
- # 退出
- mysql> exit;
查看master的状态,截图中的file提示了现在记录所在文件,position指定了具体位置。
这两个信息截图下来,等会备用。
从机器[slave]配置
下面这个是从备份机操作的哈,千万别弄错了哈。
- #编辑配置文件
- vim /etc/my.cnf
- # 按下/ 输入 server-id 定位
- # 修改server-id 的1 改为2
- server-id = 2
首先这里修改server-id ,这是必须改的。然后插入如下内容:
- # 要同步的数据库
- replicate-do-db = text
- # 定义relay日志名
- relay_log = mysqld-relay-bin
- # salve从机执行日志。
- log-slave-updates = ON
- # 由于后面讲双主,这里写ON
第六行log-slave-updates 这个如果只是单纯主从就不需要打开了,如果是双主,或者多机循环备份才打开。
和上面主机器配置文件一样,可以指定,也可以选择排除。有的人数据库多的话,可以选择下面这种排除法。记得啊,如果主机器是选择法,则从机器的这里配置也用选择法,如果主机器是忽略法,从机器这里也选择忽略法,避免出问题。
- # 忽略下面几个数据库
- replicate-ignore-db = mysql
- replicate-ignore-db = information_schema
- replicate-ignore-db = performance_schema
- # 下面两个不再解释
- relay_log = mysqld-relay-bin
- log-slave-updates = ON
这里有人纳闷了为啥截图前面的主的是一个数据库,下面是三个呢,请忽略这个细节哈。因为我后来是同步三个数据库。
编辑方法:光标移动要修改的位置-->按下“insert”-->编辑后按下“ESC”-->shift+Q-->wq-->回车
然后重启mysql服务。
- # linux输入
- service mysql restart
- # linux下的lnmp可以用上面也可以用
- lnmp restart
- # windows根据相应环境操作,或者面板操作。
开始连接和测试
这一步很重要,有的文章根本不提这个。这一步依然在从机(备份机)上操作。
- # 在备份机上登陆本机账户
- mysql -uroot -p
- # 然后回车,然后再写密码。回车进入SQL命令行
- # 停用数据库
- mysql> stop slave;
- # 建立连接
- mysql> change master to master_host='123.456.1.1', master_user='backup',master_password='123456', master_log_file='mysql-bin.000006', master_log_pos=221059257;
- # 启动数据库
- mysql> start slave;
- # 查看链接状态
- mysql> show slave status\G;
第7行这里要注意几个地方,一个是IP地址是写主机器的IP[和前面添加账户不一样,前面是写备份机的IP,这里是写主机器的IP,因为你这时候要从备份机器连接主机器],账户密码是前面在主机器上分配给备份机的那个操作的账户密码。master的文件是上面查看master状态记录的file,最后这个的参数就是position的。
还有,最后这个不要引号哈,最后这个等于号后面没引号,别自作聪明哦。
第7行这个执行如果报错,那请看错误日志,看错误提示等,也可以看本文后面的介绍。正常如下:
这里有的文章误导,说Slave_IO_Running 这个是yes,其实当时我也纳闷,怎么这里是这样,有问题?可是又不像有问题啊,然后去测试了下数据库操作,发现是正常的。这里因为是备份机,所以这样,如果做双主,这里确实就是yes的。Slave_SQL_Running 这里就是YES。如果这两个或者其中一个是NO,那就有问题了,要检查日志,后面提到。这里可以输入exit; 退出mysql命令行窗口。
如何实验呢,在主机的数据库里找个不影响的表,插入一条数据,或者修改一个数据,然后再看看备份机上数据库的同一个位置的数据是否跟着一起变化。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助