主从复制nginx

前言:准备两台MySQL,一台主(Master)服务器,一台从(Slave)服务器,主库的数据变更,需要同步到从库中(主从复制)。而用户在访问我们项目时,如果是写操作(insert、update、delete),则直接操作主库;如果是读(select)操作,则直接操作从库(在这种读写分离的结构中,从库是可以有多个的),这种结构我们称为 读写分离 。

1 准备工作

     (1)准备两台服务器,并且在服务器中安装MySQL,MYSQL的版本5.7.25

     (2)防火墙开放3306端口号 

           

 

          

          firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --zone=public --list-ports

          firewall-cmd --zone=public --list-ports

     (3)并将两台数据库服务器启动起来,并登录MySQL,验证是否正常启动

         

          systemctl start mysqld

 

 2 主库的配置

     (1)修改根目录修改Mysql数据库的配置文件/etc/my.cnf将以下信息配置进去

         

         log-bin=mysql-bin #[必须]启用二进制日志

         server-id=200 #[必须]服务器唯一ID(唯一即可)

    (2)重启MYSQL服务

         

          systemctl restart mysqld

   (3)创建数据同步的用户并授权并且登录mysql,并执行如下指令,创建用户并授权

         

         GRANT REPLICATION SLAVE ON *.* to 'xiaoxiongge'@'%' identified by 'Root@123456';

    (4) 登录Mysql数据库,查看master同步状态并且执行下面SQL,记录下结果中File和Position的值。注意:下面SQL的作用是查看Master的状态,执行完此SQL后不要再执行任何操作

         

         show master status;

  3 从库的配置

   (1)修改根目录修改Mysql数据库的配置文件/etc/my.cnf将以下信息配置进去

         

        server-id=201 #[必须]服务器唯一ID

   (2)重启MYSQL服务

        

         systemctl restart mysqld

     (3)登录Mysql数据库,设置主库地址及同步位置并且重启服务

       

       

        change master to master_host='192.168.200.200',master_user='xiaoming',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=154;

        start slave;

       

     (4)查看从数据库的状态,然后通过状态信息中的 Slave_IO_running 和 Slave_SQL_running 可以看出主从同步是否就绪,如果这两个参数全为Yes,表示主从同步已经配置完成

        show slave status\G;

      

       注意:如果从库有再用库, Slave_SQL_running这个参数会变成NO。解决方法:在数据库的配置文件/etc/my.cnf文件slave_skip_errors=1146添加进去

  4测试MYSQL的读写分离是否成功

         验证写入到主库

      (1)测试主库写入,先关闭从库的服务

        

      (2)在客户端修改数据

       

 

      (3)此时能在主库查到已修改的数据而从库没有修改

        验证查询分离从库

     (1)关闭从服务器

        

      (2)修改主数据库的信息,查看从数据库是否可以获取到更新的数据

posted @ 2022-08-18 17:33  无缺胜有缺  阅读(190)  评论(0)    收藏  举报