标签:stat 配置 roo iter TE comm 相关 logs mys
1、主从复制:主节点将数据同步到多个从节点
2、级联复制:主节点将数据同步到一个从节点,其他的从节点在向从节点复制数据
3、同步复制:将数据从主节点全部同步到从节点时才返回给用户的复制策略叫同步复制
4、异步复制:只要数据写入到主节点就立即返回给用户同步完成
5、读写分离:在前端加一个调度器,负责将改变数据的语句和查询数据的语句分开调度,把写操作调度到主节点,读操作调度到从节点
主节点:
从节点:
跟复制功能相关的文件:
复制架构:
一、数据库搭建主从架构
1、主服务器配置
~]# vim /etc/my.cnf [mysqld] log_bin binlog_format=ROW log-basename=master1 server_id=1 ~]# systemctl restart mariadb ~]# mysql MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO testuser@‘192.168.95.5‘ IDENTIFIED BY ‘testpass‘; #授权同步账户及主机IP MariaDB [(none)]> SHOW MASTER LOGS; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | master1-bin.000001 | 26756 | | master1-bin.000002 | 921736 | | master1-bin.000003 | 401 | #记录此位置,从服务器从这里开始同步 +--------------------+-----------+
2、从服务配置
~]# vim /etc/my.cnf [mysqld] server_id=2 #服务器ID唯一 relay_log=relay-log relay_log_index=relay-log.index read_only=ON ~]# systemctl restart mariadb ~]# mysql MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST=‘192.168.95.2‘, #指定主节点IP -> MASTER_USER=‘testuser‘, #同步用户的用户名 -> MASTER_PASSWORD=‘testpass‘, #密码 -> MASTER_PORT=3306, -> MASTER_LOG_FILE=‘master1-bin.000003‘, #主服务器记录的文件 -> MASTER_LOG_POS=401, #位置 -> MASTER_CONNECT_RETRY=10; #重试时间10秒--可省略 MariaDB [(none)]> START SLAVE; #开始主从复制
实验到此就完成了 新数据库的主从服务器的搭建,此时主服务器的文件有任何更改将会同步到服务器上。如果从服务器重启,主服务器在此时更新了问你件,待从服务器启动之后,数据会自动同步。
3、测试
在主节点上生成一些数据: MariaDB [(none)]> CREATE DATABASE testdb; MariaDB [(none)]> use testdb MariaDB [testdb]> create table testlog (id int auto_increment primary key,name char(30),age int default 20); MariaDB [testdb]> delimiter $$ MariaDB [testdb]> create procedure pro_testlog() -> begin -> declare i int; -> set i = 1; -> while i < 100000 -> do insert into testlog(name,age) values (concat(‘testuser‘,i),i); -> set i = i +1; -> end while; -> end$$ MariaDB [testdb]> delimiter ; MariaDB [testdb]> START TRANSACTION; MariaDB [testdb]> CALL pro_testlog; MariaDB [testdb]> COMMIT;
在从节点上查看同步情况: MariaDB [(none)]> SELECT COUNT(*) FROM testdb.testlog; +----------+ | COUNT(*) | +----------+ | 99999 | #同步成功 +----------+ MariaDB [(none)]> SHOW SLAVE STATUS\G *************************** 1. row **************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.95.2 Master_User: testuser Master_Port: 3306 Connect_Retry: 10 Master_Log_File: master1-bin.000003 Read_Master_Log_Pos: 10389814 Relay_Log_File: relay-log.000002 Relay_Log_Pos: 10389944 Relay_Master_Log_File: master1-bin.000003 Slave_IO_Running: Yes #IO线程已启动 Slave_SQL_Running: Yes #SQL线程已启动 Seconds_Behind_Master: 0 #主从复制的时间差 Master_Server_Id: 1
二、旧数据库新加从服务器
1、主服务器配置
~]# vim /etc/my.cnf [mysqld] log_bin binlog_format=ROW log-basename=master1 server_id=1 ~]# systemctl restart mariadb ~]# mysqldump -A -F --single-transaction --master-data=1 > full.sql #完全备份到文件内 ~]# scp full.sql root@192.168.95.5:/root/ #将安全备份复制到远程主机 ~]# mysql -e ‘GRANT REPLICATION SLAVE ON *.* TO testuser@‘192.168.95.5‘ IDENTIFIED BY ‘testpass‘;‘
2、从服务器配置
~]# vim /etc/my.cnf [mysqld] server_id=2 relay_log=relay-log relay_log_index=relay-log.index read_only=ON ~]# systemctl restart mariadb ~]# vim full.sql #在备份的SQL文件中加入以下信息 CHANGE MASTER TO MASTER_HOST=‘192.168.95.2‘, MASTER_USER=‘testuser‘, MASTER_PASSWORD=‘testpass‘, MASTER_PORT=3306, MASTER_LOG_FILE=‘master1-bin.000005‘, MASTER_LOG_POS=245, MASTER_CONNECT_RETRY=10; ~]# mysql < full.sql #导入SQL的同时配置已经完成 MariaDB [(none)]> SELECT COUNT(*) FROM testdb.testlog; +----------+ | COUNT(*) | +----------+ | 99999 | +----------+ MariaDB [(none)]> START SLAVE; #启动复制
3、查看同步状态
show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.95.2
Master_User: laobai
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master1-bin.000003
Read_Master_Log_Pos: 245
Relay_Log_File: mariadb-relay-bin.000005
Relay_Log_Pos: 531
Relay_Master_Log_File: master1-bin.000003
Slave_IO_Running: Yes #同步状态正常
Slave_SQL_Running: Yes
标签:stat 配置 roo iter TE comm 相关 logs mys
原文地址:https://www.cnblogs.com/huxiaojun/p/9215517.html