https://www.cnblogs.com/ilovebath/p/15938449.html

本文接MySQL集群架构之主从模式 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com),对异步复制方式进行实践全过程进行探究(过程中将附上各种操作可能出现问题后解决问题的操作,可能不是最优的)。

  环境准备:

    1、两台机器,ip分别是168.192.X.165/168.192.X.2。165为Master,2为Slave。本案例中Slave在win10环境中,具体安装启动可参考MYSQL8.0.26zip安装_树叶single-CSDN博客(net start mysql8.0.26(net start 服务名称)必须是管理员身份)。

    2、使用MySQL的版本为8.0.26,确保两台机器上版本一样:

      

      

      两台机器互通:

        Master远程链接Slave失败(Linux——>Win10),修改Win10上设置:

          

          

        链接失败:

          

        修改Slave上机器密码,Windows下的实际操作如下:

          1.关闭正在运行的MySQL:net stop mysql8.0.26

          2.打开DOS窗口,转到mysql\bin目录。

          3.输入mysqld –skip-grant-tables回车——无任何信息,控制台也不能再输入任何信息。

          4.再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。

          5.输入mysql 使用root用户链接数据库。

          6.改密码:ALTER USER ‘root’ IDENTIFIED WITH mysql_native_password BY ‘ShirleyXXX*’;

          7.刷新权限(必须的步骤)<flush privileges;

            

        root用户访问host权限对外开放(一定要重启mysql服务):

          

      Master再次远程链接Slave成功(Linux——>Win10):

        

      Slave链接Master成功:

        

  操作:

  Master配置:

    1、在主库Master上,设置一个复制使用的账户,并授予 REPLICATION SLAVE权限。这里创建一个复制用户repl,可以从IP为192.168.X.2(Slave)的主机进行连接。

      创建用户并设置权限:“grant 权限列表 on 数据库 to ‘用户名‘@’访问主机’ ”

        grant replication slave on . to repl@’192.168.X.2’;

        

      repl是从(slave)端设置的访问主(master)端的用户,也就是要完成主从复制的用户,密码XXXX;IP192.168.X.2是从(slave)端的IP。

      注意:类似“grant 权限列表 on 数据库 to ‘用户名‘@’访问主机’ identified by ‘密码’ with grant option;”创建用户同时设置权限的方式在最新版本中已经不支持了,需要先创建用户再添加权限。

    2、修改Master服务器的配置文件 mysql-server.cnf,开启 BINLOG,并设置 server-id的值,这两个参数的修改需要重新启动数据库服务才可以生效(Linux上修改文件/etc/my.cnf.d/mysql-server.cnf)。

        

      修改配置后需重启服务:

        

    3、得到Master上当前的二进制日志名和偏移量值。这个操作的目的是为了在从数据库启动以后,从这个点开始进行数据的恢复。执行show master status:

        

  Slave配置:    

    4、修改Slave数据库的配置文件 my.cnf,增加 server-id参数。注意 server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己唯一的 server-id值。(参考Win10上安装MySQL8.0.26 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)修改my.ini文件:)

          

    5、在Slave库上,使用 - -skip-slave- start选项启动从数据库,这样不会立即启动从数据库服务上的复制进程,方便我们对从数据库的服务进行进一步的配置。
      操作命令:./bin/mysqld_safe –defaults-file=/etc/my.cnf –skip-slave-start(Linux上,win10上的mysql没有mysqld_safe)

      或者启动后:

        

    6、对Slave数据库服务器做相应设置,指定复制使用的用户,主数据库服务器的IP、端口以及开始执行复制的日志文件和位置等,参考代码如下:  

        

      CHANGE MASTER TO

        MASTER_HOST=’192.168.X.165’,

        MASTER_PORT=3306,

        MASTER_USER=’repl’,

        MASTER_PASSWORD=’XXXX’,

        MASTER_LOG_FILE=’master-bin.000001’,

        MASTER_LOG_POS=156;

        

      查看slave状态:show slave status\G;

        

      红框中状态均为YES表示成功,此时状态为NO,说明还有工作没有做。

    7、在Slave库上,启动 slave线程:start slave; 进而查看slave状态:

        

      “Slave_IO_Running” 的值为 Connecting 时,是因为slave数据库服务器去访问 master数据库服务器的 bin-log 时失败导致的。可能是第6步有问题,检查确实是的——用户repl写成了rep1。

      重新执行配置5/6/7:成功。

        

    8、这时slave上执行 show processlist命令将显示类似如下的进程:    

    9、在master上执行 show processlist命令将显示类似如下的进程:

    11、测试:在主库上建一个test1数据库,发现在从库上也出现了,在主库test1上建area表,发现在从库上也出现了,在从库上建t_user表,发现主库上没有t_user,由此可以发现主从模式搭建完成。

            

作者:Jeebiz  创建时间:2023-01-18 12:15
最后编辑:Jeebiz  更新时间:2024-08-22 10:22