Mysql主从复制及主主复制的实现

主从复制

NodeMasterSlave
LinuxCentos8Centos8
Mysql10.3.28-MariaDB10.3.28-MariaDB
IP192.168.0.114192.168.0.117

主节点配置文件

[mysqld]
server-id=1    #为当前节点设置一个全局惟的ID号(不能和主节点一
log-bin    #启用二进制
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

从节点配置文件:

[mysqld]
server-id=2
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

查看主节点当前的二进制文件名及位置:

MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       536 |
+--------------------+-----------+

在主机点上创建有复制权限的用户账号 :
 

grant replication slave on *.* to repluser@'192.168.0.%' identified by 'test                                                                       db';

在从节点上使用有复制权限的用户账号连接至主服务器,并启动复制线程 

change master to MASTER_HOST='192.168.0.114',MASTER_USER='repluser',MASTER_P                                                                       ASSWORD='testdb',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=536;

查看从节点IO线程及SQL线程

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.0.114
                   Master_User: repluser
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mariadb-bin.000001
           Read_Master_Log_Pos: 536
                Relay_Log_File: mariadb-relay-bin.000002
                 Relay_Log_Pos: 557
         Relay_Master_Log_File: mariadb-bin.000001
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB:
           Replicate_Ignore_DB:
            Replicate_Do_Table:
        Replicate_Ignore_Table:
       Replicate_Wild_Do_Table:
   Replicate_Wild_Ignore_Table:
                    Last_Errno: 0
                    Last_Error:
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 536
               Relay_Log_Space: 868
               Until_Condition: None
                Until_Log_File:
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File:
            Master_SSL_CA_Path:
               Master_SSL_Cert:
             Master_SSL_Cipher:
                Master_SSL_Key:
         Seconds_Behind_Master: 0
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error:
                Last_SQL_Errno: 0
                Last_SQL_Error:
   Replicate_Ignore_Server_Ids:
              Master_Server_Id: 1
                Master_SSL_Crl:
            Master_SSL_Crlpath:
                    Using_Gtid: No
                   Gtid_IO_Pos:
       Replicate_Do_Domain_Ids:
   Replicate_Ignore_Domain_Ids:
                 Parallel_Mode: conservative
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread                                                                        to update it
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0

验证主从复制是否成功

在主节点上创建库查看从节点是否同步

MariaDB [(none)]> create database test001;
Query OK, 1 row affected (0.001 sec)

从节点查看

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test001            |
+--------------------+
4 rows in set (0.000 sec)

主主复制

主节点配置文件

[mysqld]
server-id=1    #为当前节点设置一个全局惟的ID号(不能和主节点一
log-bin    #启用二进制
auto_increment_offset=1	#开始点
auto_increment_increment=2	#增长幅度
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

从节点配置文件:

 

[mysqld]
server-id=2
log-bin
auto_increment_offset=2 #开始点
auto_increment_increment=2      #增长幅度
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

配置连接master的相关信息

change master to MASTER_HOST='192.168.0.117',MASTER_USER='repluser',MASTER_PASSWORD='testdb',MASTER_PORT=3306,MASTER_LOG_FILE=' mariadb-bin.000001',MASTER_LOG_POS=330;
start slave;

查看主从状态

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.0.114
                   Master_User: repluser
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mariadb-bin.000002
           Read_Master_Log_Pos: 1198
                Relay_Log_File: mariadb-relay-bin.000002
                 Relay_Log_Pos: 557
         Relay_Master_Log_File: mariadb-bin.000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

 测试验证:

在114上执行

create database t1;
create table t1(id int auto_increment primary key,name char(10));
insert t1 (name) values('user1');

在117上执行

insert t1 (name) values('user2');

 结果验证

MariaDB [db1]> select * from t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | user1 |
|  3 | user2 |
+----+-------+

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值