Centos7 Mariadb主从复制

实验环境

主Mariadb:
centos 7
master:192.168.14.210

从Mariadb:
centos 7
slave:192.168.14.211

主从复制介绍:

第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。Mariadb将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

第三步:SQL slave thread(SQL线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

模式: C/S 模式

端口:3306

一、安装mariadb(两台)

1、安装

[root@master ~]# yum install -y mariadb-server mariadb

[root@slave ~]# yum install -y mariadb-server mariadb

2、防火墙允许访问3306

[root@master ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@master ~]# firewall-cmd --reload

[root@slave ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@slave ~]# firewall-cmd --reload

二、主节点

1、修改配置文件

[root@master ~]# vi /etc/my.cnf
[mysqld]
server-id=1
log-bin
binlog-format=row

说明:

log-bin #启用二进制日志,默认存在/var/lib/mariadb 下面
server-id=1 #本机数据库ID 唯一标示。

2、启动mysql服务

[root@master ~]# systemctl start mariadb
[root@master ~]# mysql -e "SHOW MASTER LOGS;"
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       245 |
+--------------------+-----------+

3、授权给从节点复制的账号

[root@master ~]# mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.14.%' IDENTIFIED BY 'centos';"  

三、从节点

1、修改配置文件

[root@slave ~]# vi /etc/my.cnf
[mysqld]
server-id=2
log-bin
binlog-format=row
read-only        #使用ProxySQL读写分离的时候需要填写

2、启动数据库服务

[root@slave ~]# systemctl start mariadb

3、写入CHANGE MASTSER TO信息

[root@slave ~]# mysql
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.14.210', MASTER_USER='repluser',MASTER_PASSWORD='centos',MASTER_PORT=3306,MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=245;  

4、启动复制线程

MariaDB [(none)]> start slave;

停止:stop slave

重置:reset slave

5、查看状态

MariaDB [(none)]> show slave status \G

四、测试主从复制

1、主节点创建数据库并添加表

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

MariaDB [(none)]> use my_db;
Database changed
MariaDB [my_db]> create table stu (age int,name char(40));
Query OK, 0 rows affected (0.03 sec)


MariaDB [my_db]> show tables;
+-----------------+
| Tables_in_my_db |
+-----------------+
| stu             |
+-----------------+
1 row in set (0.00 sec)


MariaDB [my_db]> insert into stu values(210,'master');
Query OK, 1 row affected (0.03 sec)

MariaDB [my_db]> select * from stu;
+------+--------+
| age  | name   |
+------+--------+
|  210 | master |
+------+--------+
1 row in set (0.00 sec)

MariaDB [my_db]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

查看主节点二进制日志

2、从节点查看

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| my_db              |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

MariaDB [(none)]> use my_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [my_db]> select * from stu;
+------+--------+
| age  | name   |
+------+--------+
|  210 | master |
+------+--------+
1 row in set (0.00 sec)

到此主从复制配置成功

发布了132 篇原创文章 · 获赞 118 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/tladagio/article/details/103137845