实验环境
主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)
到此主从复制配置成功
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95245.html