云枢认证考试_云枢
MySQL5.7 配置 GTID 主從同步
前言
mysql要求5.7以上
Master開啟gtid
[mysqld]
basedir=/usr/local/mysql_1
datadir=/usr/local/mysql_1/data
port=3307
socket=/usr/local/mysql_1/mysql.sock
character-set-server=utf8
log-error=/usr/local/mysql_1/log/mysqld.log
pid-file=/usr/local/mysql_1/mysqld.pid
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=7
#每個實例的server_id都要不一樣
#binloglog/
log-bin=/usr/local/mysql_1/log/log-bin
log-slave-updates=1
#允許后端接入slave
binlog_format=row
#強烈建議,其他格式可能造成數(shù)據(jù)不一致
#relay log
skip_slave_start=1
[mysql]
socket=/usr/local/mysql_1/mysql.sock
[client]
socket=/usr/local/mysql_1/mysql.sock
Slave 開啟gtid
[mysqld]
basedir=/usr/local/mysql_2
datadir=/usr/local/mysql_2/data
port=3308
socket=/usr/local/mysql_2/mysql.sock
character-set-server=utf8
log-error=/usr/local/mysql_2/log/mysqld.log
pid-file=/usr/local/mysql_2/mysqld.pid
#GTID:
gtid_mode=on
enforce_gtid_consistency=on
server_id=8
#每個實例的server_id都要不一樣log/
#binlog
log-bin=/usr/local/mysql_2/log/log-bin
log-slave-updates=1
#允許后端接入slave
binlog_format=row
#強烈建議,其他格式可能造成數(shù)據(jù)不一致
#relay log
skip_slave_start=1
[mysql]
socket=/usr/local/mysql_2/mysql.sock
[client]
socket=/usr/local/mysql_2/mysql.sock
查看gtid開啟狀態(tài)
show variables like '%gtid%';
+----------------------------------+-----------+
| Variable_name | Value |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery | ON |
| enforce_gtid_consistency | ON |
| gtid_executed_compression_period | 1000 |
| gtid_mode | ON |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | |
| session_track_gtids | OFF |
+----------------------------------+-----------+
8 rows inset (0.01 sec)
創(chuàng)建同步用戶
CREATE USER 'gtid'@'%' IDENTIFIED BY '1qaz@WSX';
GRANT REPLICATION SLAVE ON *.* TO 'gtid'@'%';
配置從庫gtid復(fù)制
主庫開啟只讀
SET @@global.read_only = ON;
從庫添加配置
#停掉同步線程
stop slave;
#設(shè)置同步對象
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=3307, MASTER_USER='gtid', MASTER_PASSWORD='1qaz@WSX', MASTER_AUTO_POSITION = 1;
#開啟同步線程
start slave;
show slave status\G
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host: 127.0.0.1
Master_User: gtid
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: log-bin.000001
Read_Master_Log_Pos: 603
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 812
Relay_Master_Log_File: log-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: 603
Relay_Log_Space: 1023
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: 7
Master_UUID: 8c890bcd-ba6f-11ea-ab68-080027178650
Master_Info_File: /usr/local/mysql_2/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has readall relay log; waiting formore updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 8c890bcd-ba6f-11ea-ab68-080027178650:1-2
Executed_Gtid_Set: 8c890bcd-ba6f-11ea-ab68-080027178650:1-2
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row inset (0.00 sec)
主庫停用只讀
#要求以下兩個參數(shù)相同:
#Retrieved_Gtid_Set: 8c890bcd-ba6f-11ea-ab68-080027178650:1-2
# Executed_Gtid_Set: 8c890bcd-ba6f-11ea-ab68-080027178650:1-2
#再恢復(fù)主庫可寫
SET @@global.read_only = OFF;
測試主從復(fù)制
#mysql_1上寫入
create database db_test;
show databases;
use db_test;
create table ifnot exists user_info(
username varchar(16) not null,
password varchar(32) not null,
realname varchar(16) default '',
primary key (username)
)default charset=utf8;
show tables;
insert into user_info(username, password, realname) values
('10001', '123456', 'aa'),
('10002', '123456', 'bb'),
('10003', '123456', 'cc'),
('10004', '123456', 'dd'),
('10005', '123456', 'ee');
#mysql_2上查詢
select * from user_info ;
MySQL-proxy讀寫分離
安裝mysql-proxy
mkdirlogs lua conf
cpshare/doc/mysql-proxy/rw-splitting.lua ./lua/
cpshare/doc/mysql-proxy/admin-sql.lua ./lua/
配置并啟動
mysql添加用戶myproxy
CREATE USER 'myproxy '@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'myproxy '@'%';
編輯 conf/mysql-proxy.cnf
注意:該配置文件注釋不可同行標注,否則程序啟動失敗
#啟動用戶
user=root
admin-username=myproxy
admin-password=123456
#proxy代理的地址和端口
proxy-address=0.0.0.0:3306
#只讀mysql實例
proxy-read-only-backend-addresses=127.0.0.1:3308
#讀寫mysql實例
proxy-backend-addresses=127.0.0.1:3307
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
log-level=debug
pid-file=/usr/local/mysql-proxy/proxy.pid
chmod600 conf/mysql-proxy.cnf
以守護進程方式啟動
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.cnf --daemon
測試
tcpdump抓包
#新版本mysql-proxy對mysql客戶端支持不好,會卡死;需要安裝mariadb-client
#mysql -umyproxy -p123456 -h127.0.0.1 -P3306
tcpdump -i lo -nn -XX ip dst 127.0.0.1 and tcp dst port 3307
tcpdump -i lo -nn -XX ip dst 127.0.0.1 and tcp dst port 3308
總結(jié)
- 上一篇: git 查看修改明细_git 查看指定文
- 下一篇: testng执行参数_TestNG中注解