mysql主从配置

    xiaoxiao2026-09-25  13

    本地windows配置

    1、修改主服务器master:

      #vi /etc/my.cnf [mysqld] log-bin=mysql-bin //[必须]启用二进制日志 server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 2、修改从服务器slave:  

    注:从服务器搭建

    1.本地首先需要搭建一套mysql,可以使用集成环境。

    2.需要单独在搭建mysql,用来做主从复制

    3.下载mysql[mysql-5.6.24-win32.1432006610.zip]

    4、解压安装包 [mysql-5.6.24-win32.1432006610.zip]

    5.配置 mysql环境变量 ( 修改PATH,添加D:\MysqlServer5.6\bin ) 

    6.D:\MysqlServer5.6 目录下新建my.ini 配置文件

    #mysqld 配置 [mysqld] port=3307 basedir=E:\php\zhucong\mysql-5.6.24-win32 datadir=E:\php\zhucong\mysql-5.6.24-win32\data log_bin=mysql-bin server_id=2 relay_log=mysql-relay-bin log_slave_updates=1 read_only=1 auto-increment-increment=2 auto-increment-offset=2 binlog_checksum=none 3、启动从服务器的mysql  

    使用管理员打开CMD窗口。

    跳转到mysql的bin目录:

    mysqld -install

          

    7.启动mysql服务。

            net start mysql   启动mysql服务

           Net stop mysql   停止mysql服务

                

    4、在主服务器上建立帐户并授权slave:   #/usr/local/mysql/bin/mysql -uroot -pmttang mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

    使用navicat可以主库查询中执行

    GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO mysql_backup@'%' IDENTIFIED BY '123456';

    5、查询主服务器的mysql,查询master的状态  

       注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

         如果master为空,可能是二进制日志没有开启

    如果用解压包可以在新建的my.ini文件中添加Slave的配置与master类似,你同样需要重启slave的MySQL。如下: log_bin  = mysql-bin server_id = 2 relay_log  = mysql-relay-bin log_slave_updates = 1 read_only = 1 注:中间不要有中文的空格

    server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。

    relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。

    有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。

     

    7、链接主库

    #停止从库

    Stop slave

    #链接主库 CHANGE MASTER TO master_host = '127.0.0.1', master_user = 'mysql_backup', master_password = '123456', master_log_file = 'mysql-bin.000001', master_log_pos = 3696;

    #启动从库

    Start slave

    #查看从库状态

    Show slave status

    两个线程都为yes,则链接成功

    或者在cmd中,进入数据库

    查看状态

    Linux配置主从

    主从复制配置

    步骤如下:

    主服务器:从服务器ip地址分别为

    [python] view plain copy 192.168.145.222、192.168.145.226  

    1、修改主服务器master:

    [python] view plain copy vi /etc/my.cnf  [mysqld]      log-bin=mysql-bin   #[必须]启用二进制日志      server-id=222      #[必须]服务器唯一ID,默认是1,一般取IP最后一段  

    2、修改从服务器slave:

    [python] view plain copy vi /etc/my.cnf  [mysqld]       log-bin=mysql-bin   #[不是必须]启用二进制日志       server-id=226      #[必须]服务器唯一ID,默认是1,一般取IP最后一段  

    3、重启两台服务器的mysql

    [python] view plain copy systemctl restart mariadb  

    4、在主服务器上建立帐户并授权slave:

    [python] view plain copy mysql  mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。  

    5、登录主服务器的mysql,查询master的状态

    [python] view plain copy mysql>show master status;   +------------------+----------+--------------+------------------+   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |   +------------------+----------+--------------+------------------+   | mysql-bin.000004 |      308 |              |                  |   +------------------+----------+--------------+------------------+   1 row in set (0.00 sec)  

       注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

    6、配置从服务器Slave:

    注意mysql-bin.000004和308是第五步中的File和Position

    [python] view plain copy mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',master_log_file='mysql-bin.000004',master_log_pos=308; //注意mysql-bin.000004和308是第五步中的File和  mysql>start slave; //启动从服务器复制功能  

    7、检查从服务器复制功能状态:

    [python] view plain copy mysql> show slave status\G  ************************** 1. row ***************************                Slave_IO_State: Waiting for master to send event              Master_Host: 192.168.2.222  //主服务器地址              Master_User: mysync   //授权帐户名,尽量避免使用root              Master_Port: 3306    //数据库端口,部分版本没有此行              Connect_Retry: 60              Master_Log_File: mysql-bin.000004              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos              Relay_Log_File: ddte-relay-bin.000003              Relay_Log_Pos: 251              Relay_Master_Log_File: mysql-bin.000004              Slave_IO_Running: Yes    //此状态必须YES              Slave_SQL_Running: Yes     //此状态必须YES                    ......  

    注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

    以上操作过程,主从服务器配置完成。

     

    9、主从服务器测试:

    主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

    [python] view plain copy mysql> create database hi_db;    Query OK, 1 row affected (0.00 sec)      mysql> use hi_db;    Database changed      mysql>  create table hi_tb(id int(3),name char(10));    Query OK, 0 rows affected (0.00 sec)       mysql> insert into hi_tb values(001,'bobu');    Query OK, 1 row affected (0.00 sec)      mysql> show databases;     +--------------------+     | Database           |     +--------------------+     | information_schema |     | hi_db                |     | mysql                |     | test                 |     +--------------------+     4 rows in set (0.00 sec)    从服务器Mysql查询:       mysql> show databases;       +--------------------+     | Database               |     +--------------------+     | information_schema |     | hi_db                 |       //I'M here,大家看到了吧     | mysql                 |     | test          |       +--------------------+     4 rows in set (0.00 sec)       mysql> use hi_db     Database changed     mysql> select * from hi_tb;           //查看主服务器上新增的具体数据     +------+------+     | id   | name |     +------+------+     |    1 | bobu |     +------+------+     1 row in set (0.00 sec)  

    转载请注明原文地址: https://ju.6miu.com/read-1312318.html
    最新回复(0)