centos7 mysql主备模式(读写分离)

mysql主备模式:

服务器A:192.168.100.71(主),简称71

服务器B:192.168.100.72(备),简称72

1、两台服务器均安装mariadb(或者mysql),本次是通过yum安装mariadb。

执行命令:yum install mariadb mariadb mariadb-server -y

  

2、在71服务器上/etc/my.cnf添加内容如下:

  [mysqld]

  .........

  server-id=1
  log-bin=master-bin
  log_bin_index =master-bin.index
  binlog_do_db=database001  ##database001 是要同步的数据库的名称,后面验证数据同步时,就是同步该库的数据
  binlog_ignore_db=mysql
  user=mysql

  

3、在72服务器上/etc/my.cnf添加内容如下:

   

 4、分别在主库71和备库72上,启动mysql

执行命令:

  systemctl stop firewalld  #关闭防火墙(若服务器必须开启防火墙,可通过iptables设置相应规则,开放端口)

  systemctl start mariadb  #启动mysql

4、在主库71上,登录mysql、创建同步数据的用户,并赋予用户进行replication slave到备库72的权限

执行命令:

  mysql -uroot -p      #默认无密码,直接回车即可

  create user 'sync'@'192.168.100.72' identified by '123456';  #创建用户sync,设置密码123456,并允许备库192.168.100.72登录

  flush privileges;  #刷新权限

  grant replication slave on *.* to 'sync'@'192.168.100.72' identified by '123456' with grant option;  #赋予用户sync进行replication slave到备库72的权限

  

 5、在主库71上,查询master状态,并记录File、Position的值,后面会用到。

执行命令:

  show master status;

  

 6、在备库72上,登录mysql,并设置主库的相关信息,并启动slave

执行命令:

  mysql -uroot -p      #默认无密码,直接回车即可

  change master to master_host='192.168.100.71', master_port=3306, master_user='sync', master_password='123456', master_log_file='master-bin.000003', master_log_pos=1346;

    说明:

      master_host、master_port、master_password  #主库ip地址、端口、密码

      master_log_file  #主库File,即步骤5中show master status中File的值

      master_log_pos  #主库Position,即步骤5中show master status中Position的值

  start slave;  #启动备库

  flush privileges;  #刷新权限

  

7、在备库72上,登录mysql,查询slave状态

执行命令:show slave status\G;

  

  Slave_IO_Running和Slave_SQL_Running的状态应该均为Yes。若字段Last_SQL_Error出现Error,可通过以下方式解决:

  执行命令:

    slave stop;

    set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

    slave start;

8、分别登录主库71、备库72,修改root用户的密码为123456,并开放远程客户端登录数据库的权限(主库、备库上均进行以下操作)

执行命令:

  use mysql;  #使用mysql库

  update user set password=password("123456") where user="root";  #修改root用户的密码为123456

  grant all privileges on *.* to 'root'@'%' identified by '123456';  #设置所有ip能通过root 123456登录

  

 9、通过远程工具,如navicat,分别连接到主库71、备库72上

  

 10、在主库71上,进行创建数据库database001(database001和步骤2中配置文件my.cnf保持一致)、表test01等操作,在备库72上查看数据是否同步更新。

  CREATE DATABASE `database001` CHARACTER SET utf8 COLLATE utf8_general_ci;
  use database001 ;

  CREATE TABLE IF NOT EXISTS `test01` (
  `id` varchar(64) NOT NULL,
  `object` varchar(128) DEFAULT NULL COMMENT '操作对象',
  `action` varchar(128) DEFAULT NULL COMMENT '行为',
  PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  

 

备注:业务代码可连接主库71进行数据写入,备库72只做查询操作。

 

posted @ 2020-08-22 17:13  丶鹏  阅读(557)  评论(0编辑  收藏  举报