日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL用中间件ProxySQL实现读写分离和主节点故障应用无感应

發布時間:2024/8/26 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL用中间件ProxySQL实现读写分离和主节点故障应用无感应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天做的用proxysql實現的讀寫分離,但是在實際的應用中這樣的結構還很不完整,如果主節點出現故障那么整個拓撲的數據庫也無法通過proxysql來調用了,所以還需要增加主節點故障后proxysql能夠自動切換到新的主節點的功能。

(MGR)組復制能夠完成主節點故障后推選出來新的主節點,不過在應用層不可能通過改新的主節點的IP來連接新的主節點,通過mgr+proxysql可能實際主節點故障時應用無感應自動切換到新的主節點。

描述下上面的實現思路:三個節點使multi-primary的方式連接,應用通過連接ProxySQL中間件,根據sql的屬性(是否為select語句)來決定連接哪一個節點,一個可寫節點,兩個只讀節點(其實三個都是可寫節點,只不過通過proxysql進行了讀寫分離)。如果默認的可寫節點掛掉的話,proxysql通過定期運行的調度器會將另一個只讀節點的其中一臺設為可寫節點,實際主節點故障應用無感應的要求。

上述的整個過程中,應用無需任何變動。應用從意識發生了故障,到連接重新指向新的主,正常提供服務,秒級別的間隔。


下面做一下這個配置:


1.各server說明:

qht131????172.17.61.131????master1

qht132????172.17.61.132????master2

qht133????172.17.61.133????master3

qht134????172.17.61.134????proxysql

multi-primary的主從復制結構 :

mysql>??SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME??????????????| MEMBER_ID????????????????????????????| MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e89b | qht131??????|????????3306 | ONLINE???????|
| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e90b | qht132??????|????????3306 | ONLINE???????|
| group_replication_applier | bb0dea82-58ed-11e8-94e5-000c29e8e91b | qht133??????|????????3306 | ONLINE???????|
+---------------------------+--------------------------------------+-------------+-------------+--------------+
3 rows in set (0.00 sec)
2.在數據庫端建立proxysql登入需要的帳號(如之前已建立好的話直跳過此步驟)

mysql> CREATE USER 'proxysql'@'%' IDENTIFIED BY 'proxysql'; ? ?
Query OK, 0 rows affected (0.41 sec) ? ?
? ??
mysql> GRANT ALL ON * . * TO??'proxysql'@'%';
Query OK, 0 rows affected (0.00 sec)
? ??
mysql> create user 'sbuser'@'%' IDENTIFIED BY 'sbpass'; ? ?
Query OK, 0 rows affected (0.00 sec) ? ?
? ??
mysql> GRANT ALL ON * . * TO 'sbuser'@'%'; ? ?
Query OK, 0 rows affected (0.00 sec) ? ?
? ??
mysql> FLUSH PRIVILEGES; ? ?
Query OK, 0 rows affected (0.07 sec)?
3.創建檢查MGR節點狀態的函數和視圖

參照前面的博客,在MGR主節點上執行下面鏈接中的SQL

https://github.com/lefred/mysql_gr_routing_check/blob/master/addition_to_sys.sql

USE sys;
?
DELIMITER $$
?
CREATE FUNCTION IFZERO(a INT, b INT)
RETURNS INT
DETERMINISTIC
RETURN IF(a = 0, b, a)$$
?
CREATE FUNCTION LOCATE2(needle TEXT(10000), haystack TEXT(10000), offset INT)
RETURNS INT
DETERMINISTIC
RETURN IFZERO(LOCATE(needle, haystack, offset), LENGTH(haystack) + 1)$$
?
CREATE FUNCTION GTID_NORMALIZE(g TEXT(10000))
RETURNS TEXT(10000)
DETERMINISTIC
RETURN GTID_SUBTRACT(g, '')$$
?
CREATE FUNCTION GTID_COUNT(gtid_set TEXT(10000))
RETURNS INT
DETERMINISTIC
BEGIN
? DECLARE result BIGINT DEFAULT 0;
? DECLARE colon_pos INT;
? DECLARE next_dash_pos INT;
? DECLARE next_colon_pos INT;
? DECLARE next_comma_pos INT;
? SET gtid_set = GTID_NORMALIZE(gtid_set);
? SET colon_pos = LOCATE2(':', gtid_set, 1);
? WHILE colon_pos != LENGTH(gtid_set) + 1 DO
? ? ?SET next_dash_pos = LOCATE2('-', gtid_set, colon_pos + 1);
? ? ?SET next_colon_pos = LOCATE2(':', gtid_set, colon_pos + 1);
? ? ?SET next_comma_pos = LOCATE2(',', gtid_set, colon_pos + 1);
? ? ?IF next_dash_pos < next_colon_pos AND next_dash_pos < next_comma_pos THEN
? ? ? ?SET result = result +
? ? ? ? ?SUBSTR(gtid_set, next_dash_pos + 1,
? ? ? ? ? ? ? ? LEAST(next_colon_pos, next_comma_pos) - (next_dash_pos + 1)) -
? ? ? ? ?SUBSTR(gtid_set, colon_pos + 1, next_dash_pos - (colon_pos + 1)) + 1;
? ? ?ELSE
? ? ? ?SET result = result + 1;
? ? ?END IF;
? ? ?SET colon_pos = next_colon_pos;
? END WHILE;
? RETURN result;
END$$
?
CREATE FUNCTION gr_applier_queue_length()
RETURNS INT
DETERMINISTIC
BEGIN
? RETURN (SELECT sys.gtid_count( GTID_SUBTRACT( (SELECT
Received_transaction_set FROM performance_schema.replication_connection_status
WHERE Channel_name = 'group_replication_applier' ), (SELECT
@@global.GTID_EXECUTED) )));
END$$
?
CREATE FUNCTION gr_member_in_primary_partition()
RETURNS VARCHAR(3)
DETERMINISTIC
BEGIN
? RETURN (SELECT IF( MEMBER_STATE='ONLINE' AND ((SELECT COUNT(*) FROM
performance_schema.replication_group_members WHERE MEMBER_STATE != 'ONLINE') >=
((SELECT COUNT(*) FROM performance_schema.replication_group_members)/2) = 0),
'YES', 'NO' ) FROM performance_schema.replication_group_members JOIN
performance_schema.replication_group_member_stats USING(member_id));
END$$
?
CREATE VIEW gr_member_routing_candidate_status AS SELECT
sys.gr_member_in_primary_partition() as viable_candidate,
IF( (SELECT (SELECT GROUP_CONCAT(variable_value) FROM
performance_schema.global_variables WHERE variable_name IN ('read_only',
'super_read_only')) != 'OFF,OFF'), 'YES', 'NO') as read_only,
sys.gr_applier_queue_length() as transactions_behind, Count_Transactions_in_queue as 'transactions_to_cert' from performance_schema.replication_group_member_stats;$$
?
DELIMITER ;
4.在proxysql中增加帳號

????mysql> INSERT INTO MySQL_users(username,password,default_hostgroup) VALUES ('proxysql','proxysql',1);????

Query OK, 1 row affected (0.00 sec) ? ?
mysql> UPDATE global_variables SET variable_value='proxysql' where variable_name='mysql-monitor_username'; ? ?
Query OK, 1 row affected (0.00 sec) ? ?
? ??
mysql> UPDATE global_variables SET variable_value='proxysql' where variable_name='mysql-monitor_password'; ? ?
Query OK, 1 row affected (0.00 sec) ? ?
mysql> LOAD MYSQL SERVERS TO RUNTIME; ?
Query OK, 0 rows affected (0.23 sec) ?
??
mysql> SAVE MYSQL SERVERS TO DISK; ?
Query OK, 0 rows affected (0.08 sec) ?
測試一下能否正常登入數據庫
[root@qht134 proxysql]# mysql -uproxysql -pproxysql -h 127.0.0.1 -P6033 -e"select @@hostname"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| qht131?????|
+------------+
5.配置proxysql

?
mysql>??delete from mysql_servers;
Query OK, 6 rows affected (0.00 sec)
?
mysql>??insert into mysql_servers (hostgroup_id, hostname, port) values(1,'172.17.61.131',3306);
Query OK, 1 row affected (0.00 sec)
?
mysql>??insert into mysql_servers (hostgroup_id, hostname, port) values(1,'172.17.61.132',3306);
Query OK, 1 row affected (0.00 sec)
?
mysql>??insert into mysql_servers (hostgroup_id, hostname, port) values(1,'172.17.61.133',3306);
Query OK, 1 row affected (0.00 sec)
?
mysql>??insert into mysql_servers (hostgroup_id, hostname, port) values(2,'172.17.61.131',3306);
Query OK, 1 row affected (0.00 sec)
?
mysql>??insert into mysql_servers (hostgroup_id, hostname, port) values(2,'172.17.61.132',3306);
Query OK, 1 row affected (0.00 sec)
?
mysql>??insert into mysql_servers (hostgroup_id, hostname, port) values(2,'172.17.61.133',3306);
Query OK, 1 row affected (0.00 sec)
?
mysql> select * from??mysql_servers ;
+--------------+---------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname??????| port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1????????????| 172.17.61.131 | 3306 | ONLINE | 1??????| 0???????????| 1000????????????| 0???????????????????| 0???????| 0??????????????|?????????|
| 1????????????| 172.17.61.132 | 3306 | ONLINE | 1??????| 0???????????| 1000????????????| 0???????????????????| 0???????| 0??????????????|?????????|
| 1????????????| 172.17.61.133 | 3306 | ONLINE | 1??????| 0???????????| 1000????????????| 0???????????????????| 0???????| 0??????????????|?????????|
| 2????????????| 172.17.61.131 | 3306 | ONLINE | 1??????| 0???????????| 1000????????????| 0???????????????????| 0???????| 0??????????????|?????????|
| 2????????????| 172.17.61.132 | 3306 | ONLINE | 1??????| 0???????????| 1000????????????| 0???????????????????| 0???????| 0??????????????|?????????|
| 2????????????| 172.17.61.133 | 3306 | ONLINE | 1??????| 0???????????| 1000????????????| 0???????????????????| 0???????| 0??????????????|?????????|
+--------------+---------------+------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)
hostgroup_id = 1代表write group,針對我們提出的限制,這個地方只配置了一個節點;hostgroup_id = 2代表read group,包含了MGR的所有節點,目前只是Onlinle的,等配置過scheduler后,status就會有變化 。

對于上面的hostgroup配置,默認所有的寫操作會發送到hostgroup_id為1的online節點,也就是發送到寫節點上。所有的讀操作,會發送為hostgroup_id為2的online節點。


需要確認一下沒有使用proxysql的讀寫分離規則。因為我昨天配置了這個地方,所以需要刪除,以免影響后面的測試。

mysql> delete from mysql_query_rules;
Query OK, 2 rows affected (0.50 sec)
?
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
最后我們需要將global_variables,mysql_servers、mysql_users表的信息加載到RUNTIME,更進一步加載到DISK:

mysql> LOAD MYSQL VARIABLES TO RUNTIME; ?
Query OK, 0 rows affected (0.00 sec) ?
??
mysql> SAVE MYSQL VARIABLES TO DISK; ?
Query OK, 94 rows affected (0.02 sec) ?
??
mysql> LOAD MYSQL SERVERS TO RUNTIME; ?
Query OK, 0 rows affected (0.00 sec) ?
??
mysql> SAVE MYSQL SERVERS TO DISK; ?
Query OK, 0 rows affected (0.03 sec) ?
??
mysql> LOAD MYSQL USERS TO RUNTIME; ?
Query OK, 0 rows affected (0.00 sec) ?
??
mysql> SAVE MYSQL USERS TO DISK; ?
Query OK, 0 rows affected (0.01 sec) ?
6.配置scheduler

首先,請在Github地址https://github.com/ZzzCrazyPig/proxysql_groupreplication_checker下載相應的腳本

這個地址有三個腳本可供下載:

proxysql_groupreplication_checker.sh:用于multi-primary模式,可以實現讀寫分離,以及故障切換,同一時間點多個節點可以多寫

gr_mw_mode_cheker.sh:用于multi-primary模式,可以實現讀寫分離,以及故障切換,不過在同一時間點只能有一個節點能寫

gr_sw_mode_checker.sh:用于single-primary模式,可以實現讀寫分離,以及故障切換

由于我的環境是multi-primary模式,所以選擇/proxysql_groupreplication_checker.sh腳本。

接著,將我們提供的腳本proxysql_groupreplication_checker.sh放到目錄/var/lib/proxysql/下,并增加可以執行的權限(重要) 。

[root@qht134 ~]# chmod a+x /var/lib/proxysql/proxysql_groupreplication_checker.sh
最后,我們在proxysql的scheduler表里面加載如下記錄,然后加載到RUNTIME使其生效,同時還可以持久化到磁盤:

mysql> INSERT INTO scheduler(id,interval_ms,filename,arg1,arg2,arg3,arg4, arg5)
????-> VALUES (1,'10000','/var/lib/proxysql/proxysql_groupreplication_checker.sh','1','2','1','0','/var/lib/proxysql/proxysql_groupreplication_checker.log');
Query OK, 1 row affected (0.00 sec)
mysql> LOAD SCHEDULER TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
?
mysql> SAVE SCHEDULER TO DISK;
Query OK, 0 rows affected (0.03 sec)
scheduler各column的說明:

active : 1: enable scheduler to schedule the script we provide

interval_ms : invoke one by one in cycle (eg: 5000(ms) = 5s represent every 5s invoke the script)
filename: represent the script file path
arg1~arg5: represent the input parameters the script received

腳本proxysql_groupreplication_checker.sh對應的參數說明如下:

arg1 is the hostgroup_id for write

arg2 is the hostgroup_id for read
arg3 is the number of writers we want active at the same time
arg4 represents if we want that the member acting for writes is also candidate for reads
arg5 is the log file

schedule信息加載后,就會分析當前的環境,mysql_servers中顯示出當前只有qht131是可以寫的,qht132以及qht133是用來讀的。

mysql> ?select * from ?mysql_servers ;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)
因為schedule的arg4我設為了0,就表示可寫的節點不能用于讀。那我將arg4設置為1試一下:

mysql> update scheduler set arg4=1;
Query OK, 1 row affected (0.00 sec)
?
mysql> select * from scheduler;
+----+--------+-------------+--------------------------------------------------------+------+------+------+------+---------------------------------------------------------+---------+
| id | active | interval_ms | filename ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | arg1 | arg2 | arg3 | arg4 | arg5 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| comment |
+----+--------+-------------+--------------------------------------------------------+------+------+------+------+---------------------------------------------------------+---------+
| 1 ?| 1 ? ? ?| 10000 ? ? ? | /var/lib/proxysql/proxysql_groupreplication_checker.sh | 1 ? ?| 2 ? ?| 1 ? ?| 1 ? ?| /var/lib/proxysql/proxysql_groupreplication_checker.log | ? ? ? ? |
+----+--------+-------------+--------------------------------------------------------+------+------+------+------+---------------------------------------------------------+---------+
1 row in set (0.00 sec)
?
mysql> SAVE SCHEDULER TO DISK;
Query OK, 0 rows affected (0.01 sec)
?
mysql> LOAD SCHEDULER TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
?
mysql> select * from ?mysql_servers;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------- ? -----------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_repli ? cation_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------- ? -----------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? ? ?| 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------- ? -----------+---------+----------------+---------+
6 rows in set (0.00 sec)
?
arg4設置為1之后,qht131節點用來寫的同時也可以被用來寫。

便于下面的測試還是將arg4設為0:

mysql> ?update scheduler set arg4=0;
Query OK, 1 row affected (0.00 sec)
?
mysql> ?SAVE SCHEDULER TO DISK;
Query OK, 0 rows affected (0.02 sec)
?
mysql> ?LOAD SCHEDULER TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
mysql> ?select * from ?mysql_servers;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)
各個節點的gr_member_routing_candidate_status視圖也顯示了當前節點是否是正常狀態的,proxysql就是讀取的這個視圖的信息來決定此節點是否可用。

mysql> select * from sys.gr_member_routing_candidate_status\G
*************************** 1. row ***************************
? ? viable_candidate: YES
? ? ? ? ? ?read_only: NO
?transactions_behind: 0
transactions_to_cert: 0
1 row in set (0.01 sec)
7.設置讀寫分離:

mysql> insert into mysql_query_rules (active, match_pattern, destination_hostgroup, apply)
? ? -> values (1,"^SELECT",2,1);
Query OK, 1 row affected (0.00 sec)
?
mysql> LOAD MYSQL QUERY RULES TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)
?
mysql> SAVE MYSQL QUERY RULES TO DISK;
Query OK, 0 rows affected (0.03 sec)
match_pattern的規則是基于正則表達式的,

active表示是否啟用這個sql路由項,

match_pattern就是我們正則匹配項,
destination_hostgroup表示我們要將該類sql轉發到哪些mysql上面去,這里我們將select轉發到group 2,。
apply為1表示該正則匹配后,將不再接受其他匹配,直接轉發。

對于for update需要在gruop1上執行,可以加上規則:

insert?into?mysql_query_rules(active,match_pattern,destination_hostgroup,apply)?values(1,'^SELECT.*FOR?UPDATE$',1,1);?

通過一個循環連接proxysql,由于是select 語句,一直連接的是qht132和qht133

[root@qht133 ~]# while true; do mysql -h 172.17.61.134 -u proxysql -pproxysql -P 6033 -e "select @@hostname, sleep(3)" 2>/dev/null; done
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht132 ? ? | ? ? ? ?0 |
+------------+----------+
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht133 ? ? | ? ? ? ?0 |
+------------+----------+
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht132 ? ? | ? ? ? ?0 |
+------------+----------+
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht133 ? ? | ? ? ? ?0 |
+------------+----------+
8.設置故障應用無感應:

在讀寫分離中,我設置了qht131為可寫節點,qht132,qht133為只讀節點

如果此時qht131變成只讀模式的話,應用能不能直接連到其它的節點進行寫操作?

現手動將qht131變成只讀模式:

mysql> set global read_only=1;
Query OK, 0 rows affected (0.00 sec)
觀察一下mysql_servers的狀態,自動將group1的qht132改成了online,group2的qht131,qht133變成online了,就表示將qht132變為可寫節點,其它兩個節點變為只讀節點了。

mysql> select * from ?mysql_servers;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)
通過模擬的連接也可以看到select語句都連接到qht131和qht133進行了。

[root@qht133 ~]# while true; do mysql -h 172.17.61.134 -u proxysql -pproxysql -P 6033 -e "select @@hostname, sleep(3)" 2>/dev/null; done
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht133 ? ? | ? ? ? ?0 |
+------------+----------+
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht131 ? ? | ? ? ? ?0 |
+------------+----------+
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht133 ? ? | ? ? ? ?0 |
+------------+----------+
+------------+----------+
| @@hostname | sleep(3) |
+------------+----------+
| qht131 ? ? | ? ? ? ?0 |
+------------+----------+
將qht131變為可寫模式后,mysql_servers也恢復過來了。

mysql> set global read_only=0;
Query OK, 0 rows affected (0.00 sec)
mysql> ?select * from ?mysql_servers;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)
經過測試將qht131節點停止組復制(stop group_replication)后,mysql_servers表的信息也會正常的切換新的節點。待qht131再加入到組復制后,mysql_servers也會正常的將qht131改成online狀態。

mysql> select * from ?mysql_servers;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)


容易出現的錯誤:

mysql> ?select * from ?mysql_servers ;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_HARD | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
4 rows in set (0.00 sec)
所有節點都offline了,錯誤日志如下:

[2018-05-22 23:57:52] read node [hostgroup_id: 2, hostname: 172.17.61.133, port: 3306, isOK: 0] is not OK, we will set it's status to be 'OFFLINE_SOFT'
ERROR 1142 (42000) at line 1: SELECT command denied to user 'proxysql'@'qht134' for table 'gr_member_routing_candidate_status'
[2018-05-22 23:57:55] current write node [hostgroup_id: 2, hostname: 172.17.61.131, port: 3306, isOK: 0] is not OK, we need to do switch over
ERROR 1142 (42000) at line 1: SELECT command denied to user 'proxysql'@'qht134' for table 'gr_member_routing_candidate_status'
[2018-05-22 23:57:55] read node [hostgroup_id: 2, hostname: 172.17.61.132, port: 3306, isOK: 0] is not OK, we will set it's status to be 'OFFLINE_SOFT'
ERROR 1142 (42000) at line 1: SELECT command denied to user 'proxysql'@'qht134' for table 'gr_member_routing_candidate_status'
從錯誤日志上看出是權限的問題,proxysql用戶沒有足夠的權限讀取數據。

解決:

mysql> GRANT ALL ON * . * TO??'proxysql'@'%'; ?mysql> flush privileges;
mysql> ?select * from ?mysql_servers;
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| hostgroup_id | hostname ? ? ?| port | status ? ? ? | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
| 1 ? ? ? ? ? ?| 172.17.61.131 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.132 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 1 ? ? ? ? ? ?| 172.17.61.133 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.131 | 3306 | OFFLINE_SOFT | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.132 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
| 2 ? ? ? ? ? ?| 172.17.61.133 | 3306 | ONLINE ? ? ? | 1 ? ? ?| 0 ? ? ? ? ? | 1000 ? ? ? ? ? ?| 0 ? ? ? ? ? ? ? ? ? | 0 ? ? ? | 0 ? ? ? ? ? ? ?| ? ? ? ? |
+--------------+---------------+------+--------------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
6 rows in set (0.00 sec)
參考:

http://lefred.be/content/ha-with-mysql-group-replication-and-proxysql/

https://blog.csdn.net/d6619309/article/details/54602556
---------------------?
作者:zuozhiji?
來源:CSDN?
原文:https://blog.csdn.net/jolly10/article/details/80415685?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的MySQL用中间件ProxySQL实现读写分离和主节点故障应用无感应的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产一区二区手机在线观看 | 亚洲精选在线观看 | 97色综合 | 久久免费国产精品 | 久久精品久久久精品美女 | 国产黄在线观看 | 色欧美成人精品a∨在线观看 | 色射爱 | 美女一二三区 | 国产一区二区手机在线观看 | 综合在线色 | 日韩免费成人 | 在线观看www视频 | 中文字幕在线播放第一页 | 一区二区三区国产精品 | 成人在线视频网 | 亚洲精品久久久久58 | 91大神在线看 | 伊人影院得得 | 国产一级精品在线观看 | 亚洲天堂视频在线 | 深爱激情综合网 | 国产精彩视频一区二区 | 91亚洲精品视频 | 91精品视频在线观看免费 | 国产精品久久电影观看 | 免费av观看| 免费的成人av | 中文字幕精品三区 | 久爱精品在线 | 999电影免费在线观看2020 | 国产精品 欧美 日韩 | 色综合亚洲精品激情狠狠 | 成人av在线直播 | 成人一区二区三区在线观看 | 久久精品波多野结衣 | 成人午夜影院在线观看 | 操操操人人| 特级西西444www高清大视频 | 国产精品免费高清 | 在线免费观看av网站 | 日韩午夜在线观看 | 久久天天躁夜夜躁狠狠85麻豆 | 国产亚洲精品久久久久久久久久久久 | 美女视频黄网站 | 成人性生交大片免费观看网站 | 中文字幕一区二区三区四区久久 | 亚洲黄色片在线 | 久久国产91 | 国偷自产中文字幕亚洲手机在线 | h网站免费在线观看 | 天天干天天看 | 人人射人人 | 蜜臀久久99精品久久久酒店新书 | 中文字幕在线观看1 | 一级一片免费看 | 中文字幕av电影下载 | 色综合色综合久久综合频道88 | 中文视频在线播放 | 97日日| 久久久久久影视 | 国产亚洲综合性久久久影院 | 国产精品视频资源 | www激情久久 | 亚洲综合色av | 久久国产美女 | 99婷婷| 日韩专区中文字幕 | 97超碰在线免费观看 | 超碰在线97国产 | 久久涩涩网站 | 亚洲一区二区精品视频 | 国产精品ⅴa有声小说 | 亚洲日本韩国一区二区 | 国产亚洲精品福利 | 午夜久久美女 | 中文字幕亚洲精品在线观看 | 夜夜爽天天爽 | 久久国内视频 | 国产96在线观看 | 精品国产伦一区二区三区观看体验 | 在线草| 99精品在线免费观看 | 99久久99久久精品国产片 | 午夜三级大片 | 国产精品18久久久久久久久久久久 | 最近最新中文字幕视频 | 一级黄色电影网站 | 久久免费观看视频 | 在线观看av中文字幕 | 中文字幕4 | 日本少妇视频 | 亚洲视频免费视频 | 精品一区二区视频 | 91人人网 | 91在线国产观看 | 日韩久久激情 | 97精品国产一二三产区 | 久久精品久久精品久久39 | 国产日韩精品在线观看 | 久久人人爽人人爽人人片 | 精品久久一区 | 91亚洲成人 | 亚洲精品在线观看的 | 久草在线手机视频 | av在线免费观看不卡 | 天天色天天搞 | 91视频观看免费 | 国产不卡一区二区视频 | 天天干天天插 | 韩日在线一区 | a一片一级 | 精品av在线播放 | 97人人视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 激情五月六月婷婷 | 色婷婷视频网 | 久久欧洲视频 | 香蕉97视频观看在线观看 | 国产精品久久久久久久久久白浆 | 日本中文字幕在线看 | 伊人射 | 国产亚洲激情视频在线 | 一级a性色生活片久久毛片波多野 | 国产理论一区二区三区 | 日韩欧美大片免费观看 | 99精品免费 | 99久久精品国产一区二区三区 | 亚洲欧美乱综合图片区小说区 | 探花系列在线 | 亚洲电影久久 | 国产精品久久久久一区 | 精品一区二区综合 | 国产精品一区二区久久久 | 99色资源 | 精品国偷自产国产一区 | 国产小视频福利在线 | 精品国产理论 | 久久午夜精品影院一区 | 麻豆国产精品视频 | 亚洲精品女人 | 九九视频精品免费 | 久久中文欧美 | 国产录像在线观看 | 日韩大片在线免费观看 | 欧美日韩激情视频8区 | 天天操天天操天天操天天操 | 黄色片免费看 | 亚洲电影黄色 | 91久久国产精品 | 久久亚洲福利视频 | 永久免费视频国产 | 国产精品第一页在线观看 | 天天干视频在线 | 福利区在线观看 | 最新影院 | 夜夜视频欧洲 | 国产一级免费在线 | 在线播放 日韩专区 | 天天干亚洲 | 久久国内免费视频 | 午夜婷婷综合 | 91视频免费 | 99在线免费观看视频 | 干av在线 | 国产视频中文字幕 | 久久精品视频免费播放 | 在线观看免费日韩 | 成年人在线免费看片 | 国产一级片视频 | 国产美女视频免费观看的网站 | 国产精品美女久久久久久久久久久 | www.色综合.com| 在线国产高清 | 久久久久女人精品毛片 | 久久毛片视频 | 激情综合网在线观看 | 国产亚洲精品久久久久动 | 国产免费观看高清完整版 | 日韩在线观看视频免费 | 中文字幕免费成人 | 婷婷精品视频 | 国产精品国产三级国产aⅴ9色 | 美女av免费看 | 国产在线视频在线观看 | 黄色一级在线观看 | 一区二区视频免费在线观看 | 色吧久久 | 蜜臀av.com| 波多野结衣理论片 | 日本护士撒尿xxxx18 | 亚洲一级在线观看 | 亚洲精品va | 黄在线免费观看 | 伊人天天综合 | 欧美另类人妖 | 国产不卡片| 91视频这里只有精品 | 中国一级特黄毛片大片久久 | 91亚洲永久精品 | 国产黄色免费观看 | 免费三级骚| 久久都是精品 | 一区二区视频免费在线观看 | 最近免费中文字幕 | 天天天天天干 | 亚洲精品播放 | 婷婷国产v亚洲v欧美久久 | 国产精品嫩草影视久久久 | 在线观看视频一区二区三区 | 韩日电影在线观看 | 精品久久久999 | 色狠狠操 | 国产成人一区二区三区电影 | 一本一本久久a久久精品综合妖精 | 婷婷综合成人 | 国产成人免费精品 | 国产在线观看免费观看 | 97超碰香蕉 | 99精品久久精品一区二区 | 久久久久免费 | 成年人三级网站 | 91成人网在线 | 黄色片网站 | 国产精品久久精品 | 97视频入口免费观看 | 久久99精品国产麻豆宅宅 | 国产亚洲视频中文字幕视频 | 玖玖在线观看视频 | 国产精品丝袜在线 | 免费观看91视频大全 | 天天摸天天操天天舔 | 日韩艹 | 国产伦精品一区二区三区四区视频 | 久草在线视频精品 | 欧美日韩精品在线观看 | 中文字幕在线观看网址 | 欧美日韩中文字幕在线视频 | 日本久久久久久久久 | 久久久久区 | 日韩字幕 | 一区二区三区在线观看中文字幕 | 久久综合电影 | 国产在线播放一区 | 人人揉人人揉人人揉人人揉97 | 国产视频资源 | 91精品久久久久久粉嫩 | 日韩视频精品在线 | 免费在线成人av电影 | 伊人热| 国产96精品 | 成人观看 | 久久久久国产一区二区 | 波多野结衣一区二区 | 久久精品一区二区三 | 亚洲成av片人久久久 | 国产精品伦一区二区三区视频 | 97在线成人 | 天天干夜夜夜操天 | 色偷偷网站视频 | 久久久天天操 | 国产拍在线 | 一区二区三区四区不卡 | 欧美污污网站 | 美女在线免费观看视频 | 国产又粗又长又硬免费视频 | 久久一本综合 | 午夜视频导航 | 日韩欧美在线国产 | 激情综合网五月激情 | 久久久久久草 | 中文字幕黄色网址 | 美女国产精品 | 在线视频 国产 日韩 | 日韩高清精品免费观看 | 国产片免费在线观看视频 | 欧美一二区视频 | 国产午夜一区 | a v在线观看 | 国产精品久久人 | 国产精品午夜免费福利视频 | 亚洲午夜精品福利 | 2022久久国产露脸精品国产 | 久久精品视频免费播放 | 国产这里只有精品 | 人人爽久久久噜噜噜电影 | 五月天久久综合网 | 99热这里只有精品在线观看 | 国产精品午夜免费福利视频 | 五月婷婷激情综合网 | 亚洲欧美日韩一区二区三区在线观看 | 婷色| 在线视频 亚洲 | 国产亚洲字幕 | 91在线产啪 | 在线成人看片 | 国产在线一区二区三区播放 | 国产精品一区久久久久 | 水蜜桃亚洲一二三四在线 | 日本九九视频 | 天天操天天爽天天干 | www色| 午夜久久 | 国产明星视频三级a三级点| 一区二区在线影院 | 日韩天天操 | 黄视频色网站 | 日韩理论片中文字幕 | 91人人干 | 日韩剧 | 国产成人精品在线 | 久久久久草 | 99综合电影在线视频 | 欧美激情精品久久 | 日本高清中文字幕有码在线 | 激情综合网天天干 | av资源在线观看 | 国产资源在线免费观看 | 色婷五月 | 69夜色精品国产69乱 | 国产精品成人一区二区三区吃奶 | 91大神精品视频在线观看 | 久久久久久蜜av免费网站 | 亚洲精品麻豆 | 日韩av在线免费播放 | 中文资源在线官网 | 在线看国产日韩 | 久久精品专区 | 日本丰满少妇免费一区 | 婷婷五月在线视频 | 99精品国产在热久久 | 久久视频在线视频 | 久久歪歪| 亚洲精品女 | 欧美精品久久久久性色 | 中文字幕亚洲欧美日韩 | 精品一区二区免费视频 | 亚洲精品乱码白浆高清久久久久久 | 18网站在线观看 | 久久国产午夜精品理论片最新版本 | 狠狠躁夜夜躁人人爽超碰91 | 久久一区二区三区国产精品 | 人九九精品| www.com.日本一级 | 成人一区二区在线观看 | 麻豆91视频 | 999毛片| 亚洲精品国产自产拍在线观看 | 国产男女无遮挡猛进猛出在线观看 | 国产免费视频在线 | 黄色软件视频大全免费下载 | 中文在线 | 久久伊人八月婷婷综合激情 | 日韩亚洲国产中文字幕 | 99久久精品久久久久久动态片 | 日韩av在线资源 | 特级西西人体444是什么意思 | 中文字幕日韩国产 | 久久不卡视频 | 天天av综合网 | 久久国产91| 美女免费网视频 | 久草久草在线 | 亚洲高清91| 精品国产a| 中文字幕在线视频精品 | 国产美腿白丝袜足在线av | 国外av在线| 久久精品高清视频 | 超碰人人国产 | 91片黄在线观看 | 亚洲精品国产成人av在线 | 国产精品99免视看9 国产精品毛片一区视频 | 中文字幕一区二区三区乱码在线 | 一区二区三区播放 | 国产一区二区在线观看免费 | 婷婷激情综合 | 色综合天天综合网国产成人网 | 国产高清视频免费最新在线 | 一级c片| 国产91在线看 | 日韩av电影免费观看 | 国产小视频在线播放 | 久久久官网 | 青草视频在线播放 | 国内揄拍国产精品 | 中文字幕在线免费看 | 狠狠干网站 | 亚洲免费在线视频 | 欧美日韩在线电影 | 国产精品久久在线观看 | 亚洲精品一区二区18漫画 | 超级碰视频 | 午夜国产影院 | 成年人三级网站 | 久久麻豆视频 | 国产日本在线 | av最新资源| 一区二区不卡视频在线观看 | 国产精品精品久久久 | 免费看黄电影 | 久精品视频在线 | 国产日韩视频在线播放 | 中文字幕在线观看2018 | av播放在线 | 国产不卡在线视频 | 久久私人影院 | 麻豆国产精品一区二区三区 | 免费在线视频一区二区 | 婷婷在线免费 | 五月婷久久 | 视频一区二区免费 | 免费看一级 | 在线小视频你懂的 | 成人免费在线播放 | 久久撸在线视频 | 亚洲精品在线免费观看视频 | 天天射天天射 | 99视频国产在线 | 国产成人免费网站 | 91大神电影 | 午夜三级在线 | 久久日韩精品 | 麻豆视频在线免费 | 久久av网 | 国产成人精品一区二区三区网站观看 | 国产精品av在线免费观看 | 男女激情网址 | 欧美伦理一区二区 | 国产精品久久电影网 | 日韩美女av在线 | 最近免费中文字幕 | 成人三级网站在线观看 | 综合久久综合久久 | 久久xx视频| 亚洲精品女人久久久 | 欧美日韩国产一二 | 日韩有码专区 | 手机成人在线电影 | 99精品乱码国产在线观看 | 最近的中文字幕大全免费版 | 视频福利在线 | 美女久久精品 | 国产综合福利在线 | 精品国产一区二区三区四区vr | 国外av在线 | 久久国产精品一区二区 | 免费黄色小网站 | 在线免费观看麻豆 | 国产乱码精品一区二区蜜臀 | 啪啪资源 | 精品美女久久久久久免费 | 91热精品 | 成人免费一区二区三区在线观看 | 国产精品麻豆91 | 久久综合久久综合久久综合 | 久久久午夜精品理论片中文字幕 | www.xxxx变态.com | 中文字幕在线观看视频一区二区三区 | 在线va网站 | 高清在线一区 | 黄色一级免费电影 | 在线观看91 | 天天艹天天操 | 成人免费一区二区三区在线观看 | 在线观看亚洲 | a久久久久久| 二区三区在线视频 | 黄色毛片在线看 | 最近最新最好看中文视频 | 人人爽人人爽人人片av免 | 亚洲小视频在线观看 | 最新中文字幕在线播放 | 婷婷黄色片 | 91资源在线观看 | 九九热在线视频免费观看 | 丝袜足交在线 | 午夜在线观看一区 | 国产精品久久久久久久久久妇女 | 国产精品18久久久久久久久久久久 | 91九色蝌蚪视频在线 | 日日成人网 | 久久夜色精品国产欧美一区麻豆 | 亚洲精品国产精品久久99 | 在线免费视频 你懂得 | 精品国内自产拍在线观看视频 | 久草在线在线精品观看 | 精品专区一区二区 | 国产精品嫩草影院99网站 | 中文字幕一区二区三区在线播放 | 久久黄色网页 | 中文字幕日韩在线播放 | 狠狠干中文字幕 | 2020天天干夜夜爽 | 97超碰在线视| 国产不卡片 | 欧美成人在线免费观看 | 最新日韩视频在线观看 | www.狠狠操.com | 欧美一区二区三区激情视频 | 日本黄色免费大片 | 成人av网站在线 | 91麻豆精品一区二区三区 | 91视频免费播放 | 国产精品一区二区久久国产 | 伊人色综合久久天天网 | 久久久久成人精品免费播放动漫 | 久久久久久免费视频 | 欧美一级久久久 | 久久艹艹| 日日夜夜91 | 天天插天天干天天操 | 国产免费xvideos视频入口 | 成年在线观看 | 亚洲五月花 | 日韩大片在线免费观看 | 91九色pron| 色综合久久中文字幕综合网 | 天天射天天爽 | 日本特黄特色aaa大片免费 | 西西444www大胆高清视频 | 日日干av| 国产99久久九九精品免费 | 欧美日本不卡高清 | 成人a视频片观看免费 | 9在线观看免费 | 天堂在线一区二区 | 精品福利视频在线观看 | 久草视频播放 | 婷婷六月综合网 | 久久精品网址 | www久久| 亚洲精品午夜视频 | 久久免费视频在线观看 | 美腿丝袜av | 色婷婷欧美 | 97超碰在线资源 | 久久亚洲欧美日韩精品专区 | 久久视频精品在线观看 | 五月天婷婷在线视频 | av在线短片 | 丁香五月缴情综合网 | 99热99re6国产在线播放 | 亚洲天堂网站 | 亚洲国产免费看 | 国产 亚洲 欧美 在线 | 97色综合| 在线影院中文字幕 | 91亚洲欧美| 亚洲一区欧美激情 | 人人cao| 91成年人视频 | 黄色小说视频在线 | 亚洲成人资源在线观看 | 天天躁天天操 | 国产成人精品三级 | 日韩电影一区二区三区在线观看 | 精品国产一区二区三区蜜臀 | 午夜在线观看一区 | 日韩精品视频在线观看网址 | 国内视频1区 | 免费三级大片 | 色之综合网 | 亚州视频在线 | 麻豆视频在线免费 | 欧美精品久久久久性色 | 国产成人在线观看免费 | 免费成人黄色 | 国产精品久久久久久久久久直播 | 久久最新网址 | 91亚洲精品在线观看 | 国产v在线观看 | 日本黄色大片儿 | 欧美最猛性xxxxx(亚洲精品) | av一区二区在线观看中文字幕 | 国产精品欧美在线 | 久草在线视频在线 | 国产黑丝一区二区 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 国产超碰在线观看 | 久久精品美女视频网站 | 欧美一区成人 | 国产精品久久久久久高潮 | 91精品久久久久 | 91亚洲国产成人 | 国产偷国产偷亚洲清高 | 欧美日韩aaaa | 波多野结衣电影一区二区 | 成人啊 v| 欧美日韩视频精品 | 99精品福利 | 黄污在线看 | 国产又粗又猛又爽 | 91精品毛片| 一级黄色在线免费观看 | 国产一级免费观看视频 | 不卡中文字幕av | 国产成视频在线观看 | 免费在线精品视频 | 国产精品视频大全 | 97超碰人人爱 | 久热久草在线 | 在线91精品 | 青草草在线| 久久久久综合网 | 99精品视频免费观看视频 | 亚洲精品伦理在线 | 欧美韩国日本在线观看 | 亚洲国产精品电影 | 欧美日韩午夜在线 | 日本久久久精品视频 | 欧美日韩亚洲在线 | 最近高清中文在线字幕在线观看 | 超碰免费av | 久久成人综合视频 | 免费观看www视频 | 日本精品一区二区三区在线播放视频 | 日韩精品在线视频免费观看 | 中文字幕日韩一区二区三区不卡 | 欧美精品首页 | 国产精品初高中精品久久 | 免费观看性生活大片3 | 婷婷六月综合网 | 日日日爽爽爽 | 综合伊人av | 久久免费av电影 | 视频在线99| 夜夜骑首页 | 黄色a大片 | 亚洲欧美成人在线 | 香蕉视频在线视频 | 天天插综合 | 免费人人干| 国产精品一区二区中文字幕 | 欧美色888 | 久久精品视频播放 | 激情视频一区二区三区 | 香蕉久草 | 91一区二区三区在线观看 | 国产精品ⅴa有声小说 | 日本精品视频在线观看 | 国产在线va| 特及黄色片 | 日韩大片免费在线观看 | 久久99热精品这里久久精品 | 91日韩国产| 久久综合精品国产一区二区三区 | 国内精品视频一区二区三区八戒 | 久久精品一区八戒影视 | 色综合 久久精品 | 免费福利在线观看 | 超碰在线1| 五月香视频在线观看 | 国产精品一区久久久久 | 亚洲激情国产精品 | 天堂av色婷婷一区二区三区 | 视频在线观看一区 | 欧美日韩精品二区第二页 | 国产精品久久久久久久久久白浆 | 黄网在线免费观看 | 中文字幕视频一区二区 | 伊人影院在线观看 | av亚洲产国偷v产偷v自拍小说 | 亚洲视频,欧洲视频 | 国产香蕉视频 | 欧美激情第八页 | 精品成人久久 | 96国产精品| 久久96| 中文字幕在线免费观看 | 91成人在线观看喷潮 | 久草在线视频资源 | 中文字幕中文中文字幕 | 国产经典av | 免费特级黄毛片 | 亚洲第一区在线播放 | 免费在线成人av电影 | 伊人视频| 美女久久久久久久久久久 | 国产精品久久久久一区二区三区 | 欧美色888| 一区二区三区四区久久 | 中文字幕在线视频免费播放 | 亚洲性视频| 亚洲激情 在线 | 中文在线字幕免 | 在线看v片| 国产成人av| 99爱视频在线观看 | 超碰99在线| 亚洲综合在线五月天 | 美女视频黄在线观看 | 国产精品一区二区久久精品爱微奶 | 精品一区 在线 | 成人黄性视频 | 很污的网站 | 97成人免费视频 | 亚洲资源在线观看 | 国产91在线播放 | 国产区精品视频 | 国产精品初高中精品久久 | 欧美日韩另类在线 | 又黄又刺激又爽的视频 | 日韩在线免费高清视频 | 中文字幕在线免费观看视频 | 国产美女视频网站 | 91精品免费视频 | 97国产精品免费 | 亚洲一区二区三区四区在线视频 | 免费在线看v| 亚洲黄色大片 | 日韩在线三级 | 五月宗合网| 亚洲精品动漫久久久久 | 日韩在线视频国产 | 91高清免费看 | 天天操天天操天天 | 天天操天天射天天爱 | 中文字幕有码在线播放 | 久久久久成人精品免费播放动漫 | 日韩av电影网站在线观看 | 国产午夜精品视频 | 日韩中文在线观看 | 久久调教视频 | 91porny九色91啦中文 | 亚洲精品免费看 | 亚洲精品在线看 | 欧美怡红院| 免费久久99精品国产 | 成人av一级片 | 久久国产手机看片 | 黄色软件在线看 | 久草视频看看 | 久久免费视频网站 | 激情久久久久久久久久久久久久久久 | 99久久激情| 国产不卡一区二区视频 | 在线观看黄网站 | 久久五月婷婷丁香社区 | 国产精品一二 | 日韩91精品| 欧美日韩国产一区二区三区 | 九九九热精品 | 国产高清无av久久 | 麻豆系列在线观看 | 五月婷婷黄色网 | 91亚洲网 | 国产在线国偷精品产拍 | 国产精品成人久久久 | 免费观看成人av | 国产一线二线三线性视频 | 毛片黄色一级 | 中文字幕在线观看日本 | 亚洲视频在线观看免费 | 综合网婷婷 | 国产成人免费观看久久久 | av免费播放| 欧美视频网址 | 国产免费影院 | 婷婷网在线 | 中文字幕在线一区二区三区 | 综合色婷婷 | 欧美日韩在线视频一区二区 | 日韩电影一区二区三区在线观看 | 探花国产在线 | 干干干操操操 | 久久理论电影网 | 99久久电影 | 99热日本| 五月婷婷电影网 | 97福利| 青春草免费视频 | 日韩精品欧美一区 | 欧美午夜久久 | 婷婷网站天天婷婷网站 | 国产色在线 | 国产亚洲精品bv在线观看 | 日韩 在线观看 | 久久与婷婷 | 91av视频在线观看 | 99在线播放 | 久久久久久欧美二区电影网 | 日韩精品播放 | 中文字幕日本特黄aa毛片 | 免费男女羞羞的视频网站中文字幕 | 中文字幕在线观看免费高清完整版 | 免费久久精品视频 | 久久综合色天天久久综合图片 | 麻豆免费在线视频 | 国产a级精品| 热久久免费视频 | 婷婷色综合网 | 四虎国产精品成人免费4hu | 日本精品二区 | 国产免费又粗又猛又爽 | 九九九热精品免费视频观看 | 91看片黄色 | 成人黄色中文字幕 | 午夜精品福利影院 | 草久中文字幕 | 国产视频亚洲 | 特级黄色视频毛片 | 国产成人综合精品 | 亚洲精品免费看 | 亚洲精品视频网站在线观看 | 国产视频精品免费 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 日本视频不卡 | 91在线看黄 | 欧美日韩精品电影 | 成年人在线观看网站 | 中文在线天堂资源 | 中文字幕在线影院 | 国产精品乱码久久 | 日韩黄色在线 | 99久国产| 久久久久久久久久久国产精品 | 国产一区二区精品在线 | 国产特级毛片aaaaaa高清 | 久久精品亚洲综合专区 | 天天操天天干天天玩 | 欧美日韩不卡在线观看 | av免费在线播放 | 天天狠狠操 | 国产亚洲精品久久网站 | 国产色a在线观看 | 中文字幕婷婷 | 国产a国产a国产a | 在线观av | 黄色毛片在线 | 黄色大片视频网站 | 国产亚洲精品久久久久久久久久久久 | 日韩在线免费播放 | 久久久午夜精品理论片中文字幕 | 日韩超碰 | 午夜91在线 | 久久麻豆视频 | 亚州精品成人 | 热99久久精品 | 91黄色影视 | 中文字幕在线看片 | 久久精品国产亚洲精品2020 | 久久成人在线视频 | 久草电影免费在线观看 | 亚洲精品视频网址 | 久久99精品久久只有精品 | 日韩av一区在线观看 | 又紧又大又爽精品一区二区 | 欧美亚洲一区二区在线 | 天天躁日日躁狠狠躁av中文 | 天天精品视频 | 国产欧美在线一区 | 成人av久久 | 成人丁香花 | 国产一区视频在线 | 欧美aaa级片 | 午夜视频在线观看一区二区三区 | 欧美精品小视频 | 91成人区| 91成年人网站 | 久久99久久99精品 | 美女久久视频 | 国产一区二区手机在线观看 | 在线观看国产永久免费视频 | 四虎影视4hu4虎成人 | 人人看97| 婷婷在线资源 | sm免费xx网站 | 蜜桃麻豆www久久囤产精品 | 毛片精品免费在线观看 | 性色av免费观看 | 777xxx欧美 | 99久久精品无免国产免费 | 国产高清精品在线观看 | 欧美综合干 | 黄色的网站在线 | 一区二区三区四区在线免费观看 | 天天做天天爱夜夜爽 | 欧美日韩国产一区二区在线观看 | 97在线免费 | 亚洲日本欧美 | 国产婷婷在线观看 | 精品自拍sae8—视频 | 国产精品 欧美 日韩 | 91一区啪爱嗯打偷拍欧美 | 国产精品久久久久9999吃药 | 精品国产一区在线观看 | 97精品一区二区三区 | 97狠狠操 | 极品久久久 | 欧美激情精品久久久久久免费 | 天天色天天草天天射 | av中文在线观看 | 粉嫩av一区二区三区四区五区 | 黄色一级免费电影 | 国产精品女视频 | 久久麻豆视频 | 国产午夜麻豆影院在线观看 | 就色干综合 | 一区二区三区中文字幕在线 | 狠狠色丁香婷婷综合 | 丁香 婷婷 激情 | 欧美乱熟臀69xxxxxx | 国产在线播放一区 | 人人看人人艹 | 成年人免费在线播放 | 九九99| 免费黄色特级片 | 高清视频一区二区三区 | 久久tv | 99热精品视 | 国产精品电影一区二区 | 国产精品不卡一区 | 天天天天干 | 亚洲精选久久 | 色婷婷福利视频 | 国产日韩在线观看一区 | 久久精品久久精品久久 | 国产韩国精品一区二区三区 | 久久精品一区二区国产 | 视频一区视频二区在线观看 | 日韩免费三区 | 叶爱av在线| 最新不卡av | 毛片网站在线观看 | 国产在线欧美日韩 | 亚洲视频免费在线观看 | 国产一级免费观看视频 | 久久超碰免费 | 日本中文字幕影院 | 久久久精品欧美 | 中文字幕 在线看 | 国产在线观看 | 在线91播放 | 久久9视频 | 色99中文字幕 | 日本精品一区二区 | 97精品一区二区三区 | 国产精品视频app | 色婷婷亚洲婷婷 | 欧美特一级 | 欧美色插| 亚洲精品视频网 | 亚洲国产剧情av | 亚洲一区二区精品视频 | 国产高潮久久 | 91久久精品一区二区二区 | 香蕉91视频| 一本一道波多野毛片中文在线 | 在线va网站 | 91天天操| 欧美精品久久久久久久久久丰满 | 精品成人国产 | 在线观看 国产 | 日韩精品一区二区三区三炮视频 | 亚洲在线视频播放 | 去看片| 高潮久久久久久久久 | 日韩av影视在线观看 | 亚州欧美精品 | 99久久精品免费看国产麻豆 | 国产精品久久久久久久毛片 | 中文字幕91| 日韩色综合网 | 免费福利小视频 | 天天干中文字幕 | 国产一区二区高清视频 | 免费观看性生交大片3 | 日b黄色片 | 日韩一二三区不卡 | 久久精品导航 | 国产精品网红福利 | 天天射一射 | 国产精品a成v人在线播放 | 国产小视频在线 | 国产大陆亚洲精品国产 | 国产精品久久久久久69 | 国产一区二区在线观看免费 | 国产精品一区免费在线观看 | 成人视屏免费看 | 日日夜夜免费精品视频 | 久久99精品国产一区二区三区 | 中文在线a∨在线 | 婷婷在线观看视频 | 激情五月在线观看 | 在线成人欧美 | 亚洲精品大全 | 亚洲午夜精品在线观看 | japanesefreesexvideo高潮 | 日本3级在线观看 | 精品一区在线看 | 中文字幕在线播放视频 | 91精品在线视频 | 黄视频网站大全 | 少妇性aaaaaaaaa视频 | 中文字幕资源在线 | 狠狠色狠狠色终合网 | 国产视频一二区 |