mysql配置主从数据库的经验

[mysqld]

server-id=1    

log-bin=master-bin    

log-bin-index=master-bin.index

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_bin

init_connect='SET NAMES utf8mb4'

binlog-do-db=test1 #需要同步的数据库

slave-skip-errors = all #跳过从库错误

[mysqld]

server-id=2

log-bin=mysql-bin #如果从数据库,不需要再往其他数据库同步,可以注释掉

relay-log=slave-relay-bin #必须开启,从主数据库同步的binlog会写入到该目录下

relay-log-index=slave-relay-bin

#如果主从数据库名称相同

replicate-do-db=数据库名

#如果主从数据库名称不同

replicate-rewrite-db= 主数据库名 -> 从数据库名

(以下每项内容根据实际情况填写,最后两项内容就是上一步查询出来的东西)

 

change master to master_host='192.168.2.151',

master_user='mycentos1',

master_password='maluole',

master_log_file='mysql_bin.000015',

master_log_pos=443;

这两项都为yes的话就匹配成功了,主从配置理论上就可以通了

 

我们这时就可以测试一下,在主库建一张表,然后去从库刷新看下是否也生成一张相同的表了 。

mysql> CHANGE REPLICATION FILTER  REPLICATE_REWRITE_DB = ((binghe_master, binghe_slave));

成功之后start slave就可以了。然后进行在主库进行数据操作,增加或者修改,看从库是否同步进行了操作 。

  1. 首先需要注意主库和从库最好都用mysql8之前的版本,如果版本过高的话从库匹配主库的时候要注意数据库密码,建立从网上查询mysql8数据库密码加密方式升级导致配置主从不通的详细修改方法(下边提供了一种实测可用的方法)。
  2. 我们这里主库用于同步的用户就是root用户,拥有最高权限,所以不需要授权操作,直接进行主从连接配置就行,如果是自己新建用户的话需要授权(replication SLAVE以及一些update、insert等crud权限)。
  3. 然后修改数据库配置文件my.ini/my.cnf,如果没有的话就自己新建一个,在mysql的根目录。(如下配置文件本机试用成功,但是未必全部试用,可以根据网上提供的配置去配,请提前备份好原始配置文件,启动数据库报错的话先还原再从网上查询配置方式)
    1. 主库配置添加:
    1. 从库配置添加:
  4. 配置修改完成重启两个数据库。
  5. (这里为补充内容,mysql版本都为低版本5或者6的话不需要看这一步) mysql8.0后。授权可能会报错。
      • #如果使用navicate创建用户,需要修改加密方式
      • alter user xxx identified with mysql_native_password by 'xxxx'
      • #修改host改为所有ip
      • update user set host='%' where user='xxx'
  6. 在主库上mysql命令窗口或者navicat上执行 :show master status; 
    1. 然后记录查询出来的内容【file】和【position】

     

  7. 然后在从库的mysql窗口或者navicat命令行工具上执行:stop slave ,(防止有正在执行的slave任务导致修改出错,还需要重新输入master参数,比较麻烦),成功stop之后再输入下边的内容,修改主库配置,使从库连接我们想要的主库
  8. 执行成功之后,在从库继续执行start slave
  9. 后在从库执行show slave status,执行结果大致如下
  10. 如果上一步不是两个yes的话
    1. Io为connecting或者no的话,就是没连上主库,需要重新执行上边第6步的内容,先stop slave,然后change master...,这里如果觉得填写的内容没错的话,请核对主库数据库版本,版本过高的话需要注意密码的设置方式(这块参照第4步,或者百度一下mysql高版本的密码加密方式)
    2. Sql为no的话那是数据同步时候报错,可能是主库存在一些修改过的数据和从库不一致,这样不影响,正常测试就行,观察新加数据,或者修改两库都有的相同数据是否会同步操作。(我们上边配置了‘跳过从库错误’就是为了避免这里为no)
  11. 如果两个都为yes但是数据同步测试没反应的话
    1. 这样可能就是主库和从库需要同步的数据库名称不相同导致的,先在从库命令行执行stop slave,然后执行一个命令:(将括号里两个数据库名称按实际情况修改)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值