Mariadb实现主从复制(一主一从(M-S))

一、原理:
概念
1. 在主库上把数据更改(DDL DML DCL)记录到二进制日志(Binary Log)中。
2. 备库I/O线程将主库上的日志复制到自己的中继日志(Relay Log)中。
3. 备库SQL线程读取中继日志中的事件,将其重放到备份数据库之上。

二、图示:
在这里插入图片描述
三、准备工作
准备两台主机 ,关闭两台主机的防火墙或者为mysql服务设置规则,并做好host域名解析。
192.168.231.31 master
192.168.231.32 slave
对master操作:

# yum install mariadb  mariadb-server -y
# systemctl  start mariadb
# systemctl  enable mariadb
# mysqladmin -uroot password 'Wiger@5111'
# mysql -p'Wiger@5111'
MariaDB [(none)]> create database jike1701;
MariaDB [(none)]> create table jike1701.t1(id int,name char(20));
MariaDB [(none)]> insert into  jike1701 values(1,'chen');
MariaDB [(none)]> insert into  jike1701 values(2,'zhang');
MariaDB [(none)]> select * from jike1701.t1;
    -> ;
+------+-------+
| id   | name  |
+------+-------+
|    1 | chen  |
|    2 | zhang |
+------+-------+

对slave操作

# yum install mariadb  mariadb-server -y
# systemctl  start mariadb
# systemctl  enable mariadb
# mysqladmin -uroot password 'Wiger@5111'

四、“干货开始”
对master操作:
1.添加箭头所指的两行

# vim /etc/my.cnf

在这里插入图片描述
2.重启

# systemctl restart mariadb

3.登录+授权+日志文件

# mysql -p'Wiger@5111'
MariaDB [(none)]> grant replication slave,replication client on *.* to 'wiger'@''192.168.231.%' identified by 'Wiger@5222';
MariaDB [(none)]>exit
# mysqldump -p'Wiger@5111' --all-databases --single-transaction --master-data=1 --flush-logs > `date +%F`-mysql-all.sql

4.发送日志文件到slave主机

# scp 2020-07-01-mysql-all.sql slave:/root

5.查看日志文件,出现箭头所指样式即可

# cat 2020-07-01-mysql-all.sql slave:/root

在这里插入图片描述
对slave操作:
1.测试master授权的用户能否链接上主服务器;要确保可以连接如下代码所示:

[root@slave ~]# mysql -hmaster -uwiger -p'Wiger@5222'
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.65-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show grants;
+--------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for wiger@192.168.231.%                                                                                                                   |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'wiger'@'192.168.231.%' IDENTIFIED BY PASSWORD '*6A3DD188ABAC680C94D1004C93B1171B2965BDD7' |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> exit
Bye

2.修改配置文件,添加如箭头所在行

# vim /etc/my.cnf

在这里插入图片描述
3.重启MySQL服务

# systemctl restart mariadb

4.复制操作

# mysql -p'Wiger@5111'
MariaDB [(none)]> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> source /root/2020-07-01-mysql-all.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)
...
MariaDB [test]> change master to master_host='master', master_user='wiger',master_password='Wiger@5222';
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> start slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [test]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Connecting to master
                  Master_Host: master
                  Master_User: wiger
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File:
          Read_Master_Log_Pos: 4
               Relay_Log_File: mariadb-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File:
             Slave_IO_Running: Connecting
            Slave_SQL_Running: Yes                     #要出现Yes
              Replicate_Do_DB: Yes                        #要出现Yes
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       ...

5.查看数据库

MariaDB [test]> select * from jike1701.t1 ;
+------+-------+
| id   | name  |
+------+-------+
|    1 | chen  |
|    2 | zhang |
+------+-------+

完~

值得注意:
master数据库上的数据(增、删、改)可以同步到slave上;
slave数据库上的数据(增、删、改)不可以同步到master服务器上;
从而衍生出读写分离的机制;
待下回分解。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值