经验分享-mysql主从/双主热备的配置与常规错误排查

主机器[master]配置

首先,不同系统或者环境差异下,mysql数据库的配置文件所在路径不同。

linux一般是:/etc/my.cnf

windows系wamp:E:\wamp\bin\mysql\mysql5.6.17\my.ini

win的直接notepad++打开,linux用 vi 或者 vim 命令。

【注意下面这个在主机器上面执行,不是备份机,切换主机器窗口哈。】

  1. vim /etc/my.cnf

打开后,按下 / 按键,输入关键词“mysql-bin”或者“server-id”回车即可定位到要配置的地方。

  1. # Replication Master Server (default)
  2. # binary logging is required for replication
  3. log-bin=mysql-bin
  4. # binary logging format - mixed recommended
  5. binlog_format=mixed
  6. # required unique id between 1 and 2^32 - 1
  7. # defaults to 1 if master-host is not set
  8. # but will not function as a master if omitted
  9. server-id       = 1

正常来说第3,6,11三行配置都是有的,这里主机器的server-id 不修改,备份机器则要改为2,如果多台,就以此类推的3456,每一台不一样即可。

  1. # 只读配置,不影响super用户和replication
  2. read-only = 0
  3. # binlog-do-db是设置备份白名单
  4. binlog-do-db = text
  5. # 多少机器设置多少,如果主从总共两台设置2,不小于2.
  6. auto-increment-increment = 2
  7. # 这一台是第几台,同server-id 的数字一样即可。
  8. auto-increment-offset = 1

上面这里binlog-do-db是写需要热备的数据库名,如果有多个写多几个,一行一个哈。如果想用忽略名单类型的,用下面这个:

  1. read-only = 0
  2. binlog-ignore-db = mysql
  3. binlog-ignore-db = information_schema
  4. binlog-ignore-db = performance_schema
  5. auto-increment-increment = 2
  6. 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这样子。

经验分享-mysql主从/双主热备的配置与常规错误排查

编辑方法:光标移动要修改的位置-->按下“insert”-->编辑后按下“ESC”-->shift+Q-->wq-->回车
然后重启mysql服务。

  1. # linux输入
  2. service mysql restart
  3. # linux下的lnmp可以用上面也可以用
  4. lnmp restart
  5. # windows根据相应环境操作,或者面板操作。

查看master机器状态

  1. #在主机器上,登陆mysql
  2. mysql -uroot -p
  3. # 回车输入密码,然后输入如下指令
  4. mysql> show master status\G
  5. # 即可查看状态。记录状态 File 和 Position 的值
  6. # 退出
  7. mysql> exit;

查看master的状态,截图中的file提示了现在记录所在文件,position指定了具体位置。

经验分享-mysql主从/双主热备的配置与常规错误排查

这两个信息截图下来,等会备用。

从机器[slave]配置

下面这个是从备份机操作的哈,千万别弄错了哈。

  1. #编辑配置文件
  2. vim /etc/my.cnf
  3. # 按下/ 输入 server-id 定位
  4. # 修改server-id 的1 改为2
  5. server-id       = 2

首先这里修改server-id ,这是必须改的。然后插入如下内容:

  1. # 要同步的数据库
  2. replicate-do-db = text
  3. # 定义relay日志名
  4. relay_log = mysqld-relay-bin
  5. # salve从机执行日志。
  6. log-slave-updates = ON
  7. # 由于后面讲双主,这里写ON

第六行log-slave-updates 这个如果只是单纯主从就不需要打开了,如果是双主,或者多机循环备份才打开。

和上面主机器配置文件一样,可以指定,也可以选择排除。有的人数据库多的话,可以选择下面这种排除法。记得啊,如果主机器是选择法,则从机器的这里配置也用选择法,如果主机器是忽略法,从机器这里也选择忽略法,避免出问题。

  1. # 忽略下面几个数据库
  2. replicate-ignore-db = mysql
  3. replicate-ignore-db = information_schema
  4. replicate-ignore-db = performance_schema
  5. # 下面两个不再解释
  6. relay_log = mysqld-relay-bin
  7. log-slave-updates = ON

这里有人纳闷了为啥截图前面的主的是一个数据库,下面是三个呢,请忽略这个细节哈。因为我后来是同步三个数据库。

经验分享-mysql主从/双主热备的配置与常规错误排查

编辑方法:光标移动要修改的位置-->按下“insert”-->编辑后按下“ESC”-->shift+Q-->wq-->回车
然后重启mysql服务。

  1. # linux输入
  2. service mysql restart
  3. # linux下的lnmp可以用上面也可以用
  4. lnmp restart
  5. # windows根据相应环境操作,或者面板操作。

开始连接和测试

这一步很重要,有的文章根本不提这个。这一步依然在从机(备份机)上操作。

  1. # 在备份机上登陆本机账户
  2. mysql -uroot -p
  3. # 然后回车,然后再写密码。回车进入SQL命令行
  4. # 停用数据库
  5. mysql> stop slave;
  6. # 建立连接
  7. 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;
  8. # 启动数据库
  9. mysql> start slave;
  10. # 查看链接状态
  11. mysql> show slave status\G;

第7行这里要注意几个地方,一个是IP地址是写主机器的IP[和前面添加账户不一样,前面是写备份机的IP,这里是写主机器的IP,因为你这时候要从备份机器连接主机器],账户密码是前面在主机器上分配给备份机的那个操作的账户密码。master的文件是上面查看master状态记录的file,最后这个的参数就是position的。

还有,最后这个不要引号哈,最后这个等于号后面没引号,别自作聪明哦。

第7行这个执行如果报错,那请看错误日志,看错误提示等,也可以看本文后面的介绍。正常如下:

经验分享-mysql主从/双主热备的配置与常规错误排查

这里有的文章误导,说Slave_IO_Running 这个是yes,其实当时我也纳闷,怎么这里是这样,有问题?可是又不像有问题啊,然后去测试了下数据库操作,发现是正常的。这里因为是备份机,所以这样,如果做双主,这里确实就是yes的。Slave_SQL_Running 这里就是YES。如果这两个或者其中一个是NO,那就有问题了,要检查日志,后面提到。这里可以输入exit; 退出mysql命令行窗口。

如何实验呢,在主机的数据库里找个不影响的表,插入一条数据,或者修改一个数据,然后再看看备份机上数据库的同一个位置的数据是否跟着一起变化。

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情