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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL 高可用架构 之 MHA (Centos 7.5 MySQL 5.7.18 MHA 0.58)

發布時間:2025/3/20 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 高可用架构 之 MHA (Centos 7.5 MySQL 5.7.18 MHA 0.58) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 簡介
  • 環境準備
    • 秘鑰互信
    • 安裝基礎依賴包
  • 安裝MHA組件
    • 安裝 MHA Node組件
    • 安裝 MHA Manager 組件
  • 建立 MySQL 一主三從
    • 初始化 MySQL
    • 啟動MySQL 并簡單配置
    • 建立 一主三從
  • 特別說明
  • MHA Manager 配置
    • MHA 配置文件
    • 配置文件說明
    • 腳本配置
      • 自動 VIP 管理配置
      • 配置郵件和微信報警腳本
      • 手動 VIP 管理配置腳本
      • 賦權
    • 驗證 MHA 相關操作
      • 驗證 ssh 信任登錄是否成功
      • 驗證 mysql 主從復制是否成功
  • 啟動 MHA
    • 手動第一次添加vip
    • 啟動
    • 關閉
  • 模擬宕機測試
    • 自動切換步驟
  • 修復后重新加入集群
    • node02 操作
    • node01 操作
    • manager 操作
      • 修改前
      • 修改后
    • 重新啟動MHA
  • 在線進行切換
    • 停止MHA 的manager 監控
    • 執行切換命令
    • 查看狀態

簡介

MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職于Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。

在MySQL故障切換過程中,MHA能做到在0~30秒之內自動完成數據庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。

該軟件由兩部分組成:

  • MHA Manager(管理節點)
  • MHA Node(數據節點)

MHA Manager可以單獨部署在一臺獨立的機器上管理多個master-slave集群,也可以部署在一臺slave節點上。

MHA Node運行在每臺MySQL服務器上,MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然后將所有其他的slave重新指向新的master。

整個故障轉移過程對應用程序完全透明。

可以將MHA工作原理總結為如下

  • 從宕機崩潰的master保存二進制日志事件(binlog events)
  • 識別含有最新更新的slave
  • 應用差異的中繼日志(relay log)到其他的slave;
  • 應用從master保存的二進制日志事件(binlog events);
  • 提升一個slave為新的master;
  • 使其他的slave連接新的master進行復制;

  • Manager工具包

    組件名稱組件說明
    masterha_check_ssh檢查MHA的SSH配置狀況
    masterha_check_repl檢查MySQL復制狀況
    masterha_manger啟動MHA
    masterha_check_status檢測當前MHA運行狀態
    masterha_master_monitor檢測master是否宕機
    masterha_master_switch控制故障轉移(自動或者手動)
    masterha_conf_host添加或刪除配置的server信息

    Node工具包

    這些工具通常由MHA Manager的腳本觸發,無需人為操作

    組件名稱組件說明
    save_binary_logs保存和復制master的二進制日志
    apply_diff_relay_logs識別差異的中繼日志事件并將其差異的事件應用于其他的slave
    filter_mysqlbinlog去除不必要的ROLLBACK事件(MHA已不再使用這個工具)
    purge_relay_logs清除中繼日志(不會阻塞SQL線程)

    注意:

    為了盡可能的減少主庫硬件損壞宕機造成的數據丟失,因此在配置MHA的同時建議配置成MySQL 5.5的半同步復制。關于半同步復制原理各位自己進行查閱。(不是必須)


    環境準備

    操作系統內核版本主機名MySQL 版本ip地址角色
    centos 7.55.1.3-1.el7manager.mhaMySQL 5.7.1810.0.20.200Manager
    centos 7.55.1.3-1.el7node01.mhaMySQL 5.7.1810.0.20.201node01 mysql-master
    centos 7.55.1.3-1.el7node02.mhaMySQL 5.7.1810.0.20.202node02 mysql-slave
    centos 7.55.1.3-1.el7node03.mhaMySQL 5.7.1810.0.20.203node03 mysql-slave
    centos 7.55.1.3-1.el7node04.mhaMySQL 5.7.1810.0.20.204node04 mysql-slave
    MHA Manager 版本GitHub下載地址百度網盤下載地址
    v0.58GitHub下載地址百度網盤地址 提取碼:lzb0
    MHA Node 版本GitHub下載地址百度網盤下載地址
    v0.58GitHub下載地址百度網盤地址 提取碼:4e6h

    秘鑰互信

    配置所有機器相互之間root用戶秘鑰互信

    在所有機器上執行:

  • 生成密鑰對
  • ssh-keygen -t dsa -f ~/.ssh/id_rsa -P ""

  • 推送公鑰
  • ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.20.200 ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.20.201 ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.20.202 ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.20.203 ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.20.204

    此時所有的機器之間以完成互信,無需密碼等即可ssh登陸

    安裝基礎依賴包

    在所有機器上執行:

    yum install -y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes

    安裝MHA組件

    安裝 MHA Node組件

    在所有節點上執行

    [root@node01 ~]# cd /opt/soft [root@node01 soft]# ll total 639152 -rw-r--r-- 1 root root 56220 Jun 12 17:59 mha4mysql-node-0.58.tar.gz -rw-r--r-- 1 root root 654430368 Jun 11 11:21 mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz

    解壓安裝

    具體命令執行輸出就不復制出來了

    [root@node01 soft]# tar xf mha4mysql-node-0.58.tar.gz [root@node01 soft]# cd mha4mysql-node-0.58 [root@node01 mha4mysql-node-0.58]# perl Makefile.PL [root@node01 mha4mysql-node-0.58]# make && make install

    Node安裝完成后會得到四個工具

    [root@node01 mha4mysql-node-0.58]# ll /usr/local/bin/ total 48 -r-xr-xr-x 1 root root 17639 Jun 13 15:00 apply_diff_relay_logs -r-xr-xr-x 1 root root 4807 Jun 13 15:00 filter_mysqlbinlog -r-xr-xr-x 1 root root 8337 Jun 13 15:00 purge_relay_logs -r-xr-xr-x 1 root root 7525 Jun 13 15:00 save_binary_logs

    安裝 MHA Manager 組件

    在 Manager 節點執行安裝

    不用在Node節點上安裝

    [root@manager soft]# tar xf mha4mysql-manager-0.58.tar.gz [root@manager soft]# cd mha4mysql-manager-0.58 [root@manager mha4mysql-manager-0.58]# ls AUTHORS bin COPYING debian inc lib Makefile.PL MANIFEST META.yml README rpm samples t tests [root@manager mha4mysql-manager-0.58]# perl Makefile.PL [root@manager mha4mysql-manager-0.58]# make && make install

    查看 Manager 工具

    [root@manager mha4mysql-manager-0.58]# ll /usr/local/bin/ total 88 -r-xr-xr-x 1 root root 17639 Jun 13 15:10 apply_diff_relay_logs -r-xr-xr-x 1 root root 4807 Jun 13 15:10 filter_mysqlbinlog -r-xr-xr-x 1 root root 1995 Jun 13 15:13 masterha_check_repl -r-xr-xr-x 1 root root 1779 Jun 13 15:13 masterha_check_ssh -r-xr-xr-x 1 root root 1865 Jun 13 15:13 masterha_check_status -r-xr-xr-x 1 root root 3201 Jun 13 15:13 masterha_conf_host -r-xr-xr-x 1 root root 2517 Jun 13 15:13 masterha_manager -r-xr-xr-x 1 root root 2165 Jun 13 15:13 masterha_master_monitor -r-xr-xr-x 1 root root 2373 Jun 13 15:13 masterha_master_switch -r-xr-xr-x 1 root root 5172 Jun 13 15:13 masterha_secondary_check -r-xr-xr-x 1 root root 1739 Jun 13 15:13 masterha_stop -r-xr-xr-x 1 root root 8337 Jun 13 15:10 purge_relay_logs -r-xr-xr-x 1 root root 7525 Jun 13 15:10 save_binary_logs

    建立 MySQL 一主三從

    本文章主要實現是MHA集群,MySQL集群直接貼命令和my.cnf配置

    在 四臺 Node 節點上,實現,node01 為 master,剩下三個 node 為 slave 。

    [root@node01 mysql-5.7]# rpm -qa |grep mariadb | xargs rpm -e --nodeps [root@node01 soft]# useradd -s /sbin/nologin -M mysql [root@node01 soft]# tar xf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz [root@node01 soft]# mv mysql-5.7.18-linux-glibc2.5-x86_64 mysql-5.7 [root@node01 soft]# mv mysql-5.7 /usr/local/ [root@node01 soft]# ln -s /usr/local/mysql-5.7 /usr/local/mysql [root@node01 soft]# cd /usr/local/mysql-5.7 [root@node01 mysql-5.7]# echo 'export PATH=$PATH:/usr/local/mysql-5.7/bin' >> /etc/profile [root@node01 mysql-5.7]# source /etc/profile [root@node01 mysql-5.7]# mysql -V mysql Ver 14.14 Distrib 5.7.18, for linux-glibc2.5 (x86_64) using EditLine wrapper [root@node01 mysql-5.7]# cp support-files/mysql.server /etc/init.d/mysqld [root@node01 mysql-5.7]# sed -i 's@/etc/my.cnf@/usr/local/mysql-5.7/my.cnf@g' /etc/init.d/mysqld [root@node01 mysql-5.7]# sed -i 's@/usr/local/mysql/data@/opt/mysql_data@g' /etc/init.d/mysqld [root@node01 mysql-5.7]# chkconfig mysqld on [root@node01 mysql-5.7]# mkdir /opt/mysql_data [root@node01 mysql-5.7]# chown -R mysql.mysql /usr/local/mysql-5.7 [root@node01 mysql-5.7]# chown -R mysql.mysql /opt/mysql_data [root@node01 mysql-5.7]#ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog [root@node01 mysql-5.7]#ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

    my.cnf 配置文件

    注意 需要把my.cnf 中的server-id的的值四臺node不能重復,否則主從會建立失敗。

    [root@node04 mysql-5.7]# cat my.cnf [client] socket = /tmp/mysql.sock port=3306[mysql] default-character-set=utf8 socket = /tmp/mysql.sock[mysqld] socket = /tmp/mysql.sock character-set-server=utf8 basedir=/usr/local/mysql-5.7 datadir=/opt/mysql_data port=3306 pid-file=/opt/mysql_data/mysqld.pid# 四臺node不可重復 server-id=204skip-name-resolvedefault-storage-engine=INNODB explicit_defaults_for_timestamp = truegtid_mode = on enforce_gtid_consistency = 1 log_slave_updates = 1plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" loose_rpl_semi_sync_master_enabled = 1 loose_rpl_semi_sync_slave_enabled = 1 loose_rpl_semi_sync_master_timeout = 5000relay-log = mysql-relay-bin replicate-wild-ignore-table=mysql.% replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.%max_connections=2000 query_cache_size=0 table_open_cache=2000 tmp_table_size=246M thread_cache_size=300 thread_stack = 192k key_buffer_size=512M read_buffer_size=4M read_rnd_buffer_size=32Minnodb_data_home_dir = /opt/mysql_data innodb_flush_log_at_trx_commit=0 innodb_log_buffer_size=16M# 此選項修改為實際運行mysql機器內存的%60 - %80 innodb_buffer_pool_size=13Ginnodb_log_file_size=128M innodb_thread_concurrency=128 innodb_autoextend_increment=1000 innodb_buffer_pool_instances=8 innodb_concurrency_tickets=5000 innodb_old_blocks_time=1000 innodb_open_files=300 innodb_stats_on_metadata=0 innodb_file_per_table=1 innodb_checksum_algorithm=0back_log = 80 flush_time = 0 join_buffer_size = 128M max_allowed_packet = 1024M max_connect_errors = 2000 open_files_limit = 4161 query_cache_type = 0 sort_buffer_size = 32M table_definition_cache = 1400 binlog_row_event_max_size = 8K sync_master_info = 10000 sync_relay_log = 10000 sync_relay_log_info = 10000 bulk_insert_buffer_size = 64M interactive_timeout = 120 wait_timeout = 120 log-bin-trust-function-creators=1 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe] log-error = /opt/mysql_data/error.log pid-file = /opt/mysql_data/mysqld.pid

    初始化 MySQL

    node01

    [root@node01 mysql-5.7]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/opt/mysql_data 2019-06-13T07:59:00.947482Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-06-13T07:59:01.056859Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-06-13T07:59:01.076218Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-06-13T07:59:01.129463Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 1ae29152-8db1-11e9-9d54-005056990727. 2019-06-13T07:59:01.129873Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-06-13T07:59:01.130247Z 1 [Note] A temporary password is generated for root@localhost: 1qGoEiI7ga#U

    node02

    [root@node02 mysql-5.7]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/opt/mysql_data 2019-06-13T07:59:00.952176Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-06-13T07:59:01.092736Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-06-13T07:59:01.116696Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-06-13T07:59:01.171324Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 1ae8f47b-8db1-11e9-b8bb-0050569972c0. 2019-06-13T07:59:01.171711Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-06-13T07:59:01.172126Z 1 [Note] A temporary password is generated for root@localhost: qTwtKAOue7:o

    node03

    [root@node03 mysql-5.7]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7 --datadir=/opt/mysql_data 2019-06-13T07:59:00.949924Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-06-13T07:59:01.090890Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-06-13T07:59:01.116166Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-06-13T07:59:01.171335Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 1ae8f4ef-8db1-11e9-b6ae-0050569975f7. 2019-06-13T07:59:01.171753Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-06-13T07:59:01.172159Z 1 [Note] A temporary password is generated for root@localhost: XIu,h#*HQ5&M

    node04

    2019-06-13T07:59:00.955598Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-06-13T07:59:01.090420Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-06-13T07:59:01.113972Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-06-13T07:59:01.166754Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 1ae84210-8db1-11e9-b6fe-005056992c6b. 2019-06-13T07:59:01.167145Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-06-13T07:59:01.167537Z 1 [Note] A temporary password is generated for root@localhost: 26jvaV)XAy>G

    執行完初始化操作后,最后會給予root的默認密碼,使用此密碼登陸后,要第一時間修改root密碼,否則不允許操作數據庫;

    啟動MySQL 并簡單配置

    # /etc/init.d/mysqld start Starting MySQL.Logging to '/opt/mysql_data/error.log'. .. SUCCESS!

    登陸MySQL 并修改密碼

    [root@node01 mysql-5.7]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.18Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> alter user user() identified by "123456"; Query OK, 0 rows affected (0.00 sec)

    所有mysql增加主從用戶

    mysql> grant replication slave on *.* to 'repl'@'10.0.20.%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> grant all on *.* to 'root'@'%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)

    建立 一主三從

    node01 的MySQL執行

    mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)

    node02、node03、node04 都執行下列語句

    change master to master_host='10.0.20.201',master_user='repl',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=463;

    show slave status\G; #查看slave IO和slave sql是否都正常


    特別說明

    下面開始配置Manager機器,本人的所有機器,均做了bond網卡綁定,所有機器的網卡名都為bond0,大家根據自己的網卡名稱自行修改,還有發送郵件的郵箱以及微信公眾號的相關配置,均需要修改為自己的。

    本次是用vip 是: 10.0.20.199

    大家根據自己的情況,做出對應的修改。

    MHA Manager 配置

    下面配置,均在manager機器上操作。

    # 創建MHA配置文件目錄 mkdir /etc/mha # 創建MHA腳本目錄 mkdir /etc/mha/scripts # 創建MHA日志目錄 mkdir /var/log/mha/ # 創建日志目錄 mkdir /var/log/mha/app1 -p # 創建日志文件 touch /var/log/mha/app1/manager.log

    MHA 配置文件

    [root@manager mha]# cat /etc/masterha_default.cnf [server default] user=root password=SIjiayong.123repl_user=repl repl_password=SIjiayong.123ssh_user=rootping_interval=1 master_binlog_dir=/opt/mysql_datamanager_workdir=/var/log/mha/app1.log manager_log=/var/log/mha/manager.log master_ip_failover_script="/etc/mha/scripts/master_ip_failover" master_ip_online_change_script="/etc/mha/scripts/master_ip_online_change" report_script="/etc/mha/scripts/send_report" remote_workdir=/tmp secondary_check_script= /usr/local/bin/masterha_secondary_check -s 10.0.20.201 -s 10.0.20.202 -s 10.0.20.203 -s 10.0.20.204 shutdown_script="" [root@manager ~]# cat /etc/mha/app1.cnf [server1] hostname=10.0.20.201 port=3306[server2] hostname=10.0.20.202 port=3306 candidate_master=1 check_repl_delay=0[server3] hostname=10.0.20.203 port=3306[server4] hostname=10.0.20.204 port=3306

    配置文件說明

    MHA主要配置文件說明

    • manager_workdir=/var/log/masterha/app1.log:設置manager的工作目錄
    • manager_log=/var/log/masterha/app1/manager.log:設置manager的日志文件
    • master_binlog_dir=/data/mysql:設置master 保存binlog的位置,以便MHA可以找到master的日志
    • master_ip_failover_script= /usr/local/bin/master_ip_failover:設置自動failover時候的切換腳本
    • master_ip_online_change_script= /usr/local/bin/master_ip_online_change:設置手動切換時候的切換腳本
    • user=root:設置監控mysql的用戶
    • password=dayi123:設置監控mysql的用戶,需要授權能夠在manager節點遠程登錄
    • ping_interval=1:設置監控主庫,發送ping包的時間間隔,默認是3秒,嘗試三次沒有回應的時候自動進行railover
    • remote_workdir=/tmp:設置遠端mysql在發生切換時binlog的保存位置
    • repl_user=repl :設置mysql中用于復制的用戶密碼
    • repl_password=replication:設置mysql中用于復制的用戶
    • report_script=/usr/local/send_report:設置發生切換后發送的報警的腳本
    • shutdown_script="":設置故障發生后關閉故障主機腳本(該腳本的主要作用是關閉主機放在發生腦裂,這里沒有使用)
    • ssh_user=root //設置ssh的登錄用戶名
    • candidate_master=1:在節點下設置,設置當前節點為候選的master
    • slave check_repl_delay=0 :在節點配置下設置,默認情況下如果一個slave落后master 100M的relay logs的話,MHA將不會選擇該slave作為一個新的master;這個選項對于對于設置了candidate_master=1的主機非常有用

    腳本配置

    自動 VIP 管理配置

    #為了防止腦裂發生,推薦生產環境采用腳本的方式來管理虛擬 ip,而不是使用 keepalived來完成

    vim /etc/mha/scripts/master_ip_failover

    #!/usr/bin/env perluse strict; use warnings FATAL => 'all';use Getopt::Long;my ($command, $ssh_user, $orig_master_host, $orig_master_ip,$orig_master_port, $new_master_host, $new_master_ip, $new_master_port );my $vip = '10.0.20.199/24'; my $key = '1'; my $ssh_start_vip = "/sbin/ifconfig bond0:$key $vip"; my $ssh_stop_vip = "/sbin/ifconfig bond0:$key down";GetOptions('command=s' => \$command,'ssh_user=s' => \$ssh_user,'orig_master_host=s' => \$orig_master_host,'orig_master_ip=s' => \$orig_master_ip,'orig_master_port=i' => \$orig_master_port,'new_master_host=s' => \$new_master_host,'new_master_ip=s' => \$new_master_ip,'new_master_port=i' => \$new_master_port, );exit &main();sub main {print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";if ( $command eq "stop" || $command eq "stopssh" ) {my $exit_code = 1;eval {print "Disabling the VIP on old master: $orig_master_host \n";&stop_vip();$exit_code = 0;};if ($@) {warn "Got Error: $@\n";exit $exit_code;}exit $exit_code;}elsif ( $command eq "start" ) {my $exit_code = 10;eval {print "Enabling the VIP - $vip on the new master - $new_master_host \n";&start_vip();$exit_code = 0;};if ($@) {warn $@;exit $exit_code;}exit $exit_code;}elsif ( $command eq "status" ) {print "Checking the Status of the script.. OK \n";exit 0;}else {&usage();exit 1;} }sub start_vip() {`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`; } sub stop_vip() {return 0 unless ($ssh_user);`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`; }sub usage {print"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n"; }

    配置郵件和微信報警腳本

    # 安裝發送郵件的工具 yum install mailx -y

    mail郵件發送程序,需要先配置好發送這信息

    vim /etc/mail.rc

    set from=*****@163.com set smtp=smtp.163.com set smtp-auth-user=***** #拿163郵箱來說這個不是密碼,而是授權碼 set smtp-auth-password=***** set smtp-auth=login

    這是具體的郵件和微信發送腳本

    vim /etc/mha/scripts/send_report

    #!/bin/bash source /root/.bash_profile # 解析變量 orig_master_host=`echo "$1" | awk -F = '{print $2}'` new_master_host=`echo "$2" | awk -F = '{print $2}'` new_slave_hosts=`echo "$3" | awk -F = '{print $2}'` subject=`echo "$4" | awk -F = '{print $2}'` body=`echo "$5" | awk -F = '{print $2}'` #定義收件人地址 email="***@***.com"# 下面這倆個需要微信公眾號中自行獲取 CropID='******************' Secret='***************************************'GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"function body() {#企業號中的應用idlocal int AppID=1000002#部門成員id,local UserID=$1#部門id,定義了范圍,組內成員都可接收到消息local PartyID='2|3'#過濾出zabbix傳遞的第三個參數local Msg=$(echo "$@" | cut -d" " -f3-)printf '{\n'printf '\t"touser": "'"$UserID"\"",\n"printf '\t"toparty": "'"$PartyID"\"",\n"printf '\t"msgtype": "text",\n'printf '\t"agentid": "'" $AppID "\"",\n"printf '\t"text": {\n'printf '\t\t"content": "'"$Msg"\""\n"printf '\t},\n'printf '\t"safe":"0"\n'printf '}\n' }tac /var/log/mha/app1/manager.log | sed -n 2p | grep 'successfully' > /dev/null if [ $? -eq 0 ]thenmessages=`echo -e "MHA $subject 主從切換成功\n master:$orig_master_host --> $new_master_host \n $body \n 當前從庫:$new_slave_hosts"` echo "$messages" | mail -s "Mysql 實例宕掉,MHA $subject 切換成功" $email >>/tmp/mailx.log 2>&1 /usr/bin/curl --data-ascii "$(body 1 1 ${messages})" ${PURL}elsemessages=`echo -e "MHA $subject 主從切換失敗\n master:$orig_master_host --> $new_master_host \n $body" `echo "$messages" | mail -s ""Mysql 實例宕掉,MHA $subject 切換失敗"" $email >>/tmp/mailx.log 2>&1 /usr/bin/curl --data-ascii "$(body 1 1 ${messages})" ${PURL} fi

    手動 VIP 管理配置腳本

    vim /etc/mha/scripts/master_ip_online_change

    #!/bin/bash source /root/.bash_profilevip=`echo '10.0.20.199/24'` #設置VIP key=`echo '1'`command=`echo "$1" | awk -F = '{print $2}'` orig_master_host=`echo "$2" | awk -F = '{print $2}'` new_master_host=`echo "$7" | awk -F = '{print $2}'` orig_master_ssh_user=`echo "${12}" | awk -F = '{print $2}'` new_master_ssh_user=`echo "${13}" | awk -F = '{print $2}'`#要求服務的網卡識別名一樣 stop_vip=`echo "ssh root@$orig_master_host /usr/sbin/ifconfig bond0:$key down"` start_vip=`echo "ssh root@$new_master_host /usr/sbin/ifconfig bond0:$key $vip"`if [ $command = 'stop' ]thenecho -e "\n\n\n****************************\n"echo -e "Disabled thi VIP - $vip on old master: $orig_master_host \n"$stop_vipif [ $? -eq 0 ]thenecho "Disabled the VIP successfully"elseecho "Disabled the VIP failed"fiecho -e "***************************\n\n\n"fiif [ $command = 'start' -o $command = 'status' ]thenecho -e "\n\n\n*************************\n"echo -e "Enabling the VIP - $vip on new master: $new_master_host \n"$start_vipif [ $? -eq 0 ]thenecho "Enabled the VIP successfully"elseecho "Enabled the VIP failed"fiecho -e "***************************\n\n\n" fi

    賦權

    最后給剛剛配置的三個腳本增加執行權限

    chmod +x /etc/mha/scripts/master_ip_failover chmod +x /etc/mha/scripts/master_ip_online_change chmod +x /etc/mha/scripts/send_report

    驗證 MHA 相關操作

    驗證 ssh 信任登錄是否成功

    通過 masterha_check_ssh 命令驗證

    [root@manager scripts]# masterha_check_ssh --conf=/etc/mha/app1.cnf # 最后出現以下提示,則表示通過 Thu Jun 13 17:19:34 2019 - [info] All SSH connection tests passed successfully.

    驗證 mysql 主從復制是否成功

    通過 masterha_check_repl 命令驗證

    [root@manager mha]# vim /etc/masterha_default.cnf # 最后出現以下提示,則表示通過 MySQL Replication Health is OK.

    啟動 MHA

    手動第一次添加vip

    本次在node01 上操作

    先在node01 的 MySQL master上綁定vip,只需要在master綁定這一次,以后會自動切換

    [root@node01 mysql-5.7]# ip a | grep 20inet 10.0.20.201/24 brd 10.0.20.255 scope global bond0inet 10.0.20.199/24 brd 10.0.20.255 scope global secondary bond0:1

    啟動

    這一步在manager上操作

    nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

    檢查 MHA 狀態

    [root@manager mha]# masterha_check_status --conf=/etc/mha/app1.cnf app1 (pid:4745) is running(0:PING_OK), master:10.0.20.201

    MHA 的日志保存在/var/log/masterha/app1/manager.log 下

    [root@manager mha]# tailf /var/log/mha/manager.log #如果最后一行是如下,表明啟動成功 Thu Jun 13 17:31:41 2019 - [info] Starting ping health check on 10.0.20.201(10.0.20.201:3306).. Thu Jun 13 17:31:41 2019 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..

    關閉

    若已處于監控狀態,需要停掉它

    masterha_stop --conf=/etc/mha/app1.cnf

    模擬宕機測試

    手動停止node01 的 MySQL master,然后查看其它節點情況。

    [root@node01 ~]# /etc/init.d/mysqld stop Shutting down MySQL............ SUCCESS! [root@node01 ~]# ip a | grep 20inet 10.0.20.201/24 brd 10.0.20.255 scope global bond0

    在node02 上查看VIP

    [root@node02 ~]# ip a | grep 20inet 10.0.20.202/24 brd 10.0.20.255 scope global bond0inet 10.0.20.199/24 brd 10.0.20.255 scope global secondary bond0:1

    在node03 上查看主從同步狀態和地址

    [root@node03 ~]# mysql -uroot -p123456 -e "show slave status\G" | egrep 'Master_Host|Slave_IO_Running|Slave_SQL_Running' mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 10.0.20.202Slave_IO_Running: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for more updates

    在node04 上查看主從同步狀態和地址

    [root@node04 ~]# mysql -uroot -p123456 -e "show slave status\G" | egrep 'Master_Host|Slave_IO_Running|Slave_SQL_Running' mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 10.0.20.202Slave_IO_Running: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for more updates

    查看Manager日志

    [root@manager mha]# tailf manager.log Fri Jun 14 10:01:03 2019 - [warning] Got error on MySQL select ping: 2006 (MySQL server has gone away) Fri Jun 14 10:01:03 2019 - [info] Executing SSH check script: exit 0 Fri Jun 14 10:01:03 2019 - [info] Executing secondary network check script: /usr/local/bin/masterha_secondary_check -s 10.0.20.201 -s 10.0.20.202 -s 10.0.20.203 -s 10.0.20.204 --user=root --master_host=10.0.20.201 --master_ip=10.0.20.201 --master_port=3306 --master_user=root --master_password=123456 --ping_type=SELECT Fri Jun 14 10:01:03 2019 - [info] HealthCheck: SSH to 10.0.20.201 is reachable. Monitoring server 10.0.20.201 is reachable, Master is not reachable from 10.0.20.201. OK. Monitoring server 10.0.20.202 is reachable, Master is not reachable from 10.0.20.202. OK. Monitoring server 10.0.20.203 is reachable, Master is not reachable from 10.0.20.203. OK. Fri Jun 14 10:01:04 2019 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on '10.0.20.201' (111)) Fri Jun 14 10:01:04 2019 - [warning] Connection failed 2 time(s).. Monitoring server 10.0.20.204 is reachable, Master is not reachable from 10.0.20.204. OK. Fri Jun 14 10:01:04 2019 - [info] Master is not reachable from all other monitoring servers. Failover should start. Fri Jun 14 10:01:05 2019 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on '10.0.20.201' (111)) Fri Jun 14 10:01:05 2019 - [warning] Connection failed 3 time(s).. Fri Jun 14 10:01:06 2019 - [warning] Got error on MySQL connect: 2003 (Can't connect to MySQL server on '10.0.20.201' (111)) Fri Jun 14 10:01:06 2019 - [warning] Connection failed 4 time(s).. Fri Jun 14 10:01:06 2019 - [warning] Master is not reachable from health checker! Fri Jun 14 10:01:06 2019 - [warning] Master 10.0.20.201(10.0.20.201:3306) is not reachable! Fri Jun 14 10:01:06 2019 - [warning] SSH is reachable. Fri Jun 14 10:01:06 2019 - [info] Connecting to a master server failed. Reading configuration file /etc/masterha_default.cnf and /etc/mha/app1.cnf again, and trying to connect to all servers to check server status.. Fri Jun 14 10:01:06 2019 - [info] Reading default configuration from /etc/masterha_default.cnf.. Fri Jun 14 10:01:06 2019 - [info] Reading application default configuration from /etc/mha/app1.cnf.. Fri Jun 14 10:01:06 2019 - [info] Reading server configuration from /etc/mha/app1.cnf.. Fri Jun 14 10:01:07 2019 - [info] GTID failover mode = 1 Fri Jun 14 10:01:07 2019 - [info] Dead Servers: Fri Jun 14 10:01:07 2019 - [info] 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:07 2019 - [info] Alive Servers: Fri Jun 14 10:01:07 2019 - [info] 10.0.20.202(10.0.20.202:3306) Fri Jun 14 10:01:07 2019 - [info] 10.0.20.203(10.0.20.203:3306) Fri Jun 14 10:01:07 2019 - [info] 10.0.20.204(10.0.20.204:3306) Fri Jun 14 10:01:07 2019 - [info] Alive Slaves: Fri Jun 14 10:01:07 2019 - [info] 10.0.20.202(10.0.20.202:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:07 2019 - [info] GTID ON Fri Jun 14 10:01:07 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:07 2019 - [info] Primary candidate for the new Master (candidate_master is set) Fri Jun 14 10:01:07 2019 - [info] 10.0.20.203(10.0.20.203:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:07 2019 - [info] GTID ON Fri Jun 14 10:01:07 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:07 2019 - [info] 10.0.20.204(10.0.20.204:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:07 2019 - [info] GTID ON Fri Jun 14 10:01:07 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:07 2019 - [info] Checking slave configurations.. Fri Jun 14 10:01:07 2019 - [info] read_only=1 is not set on slave 10.0.20.202(10.0.20.202:3306). Fri Jun 14 10:01:07 2019 - [info] read_only=1 is not set on slave 10.0.20.203(10.0.20.203:3306). Fri Jun 14 10:01:07 2019 - [info] read_only=1 is not set on slave 10.0.20.204(10.0.20.204:3306). Fri Jun 14 10:01:07 2019 - [info] Checking replication filtering settings.. Fri Jun 14 10:01:07 2019 - [info] Replication filtering check ok. Fri Jun 14 10:01:07 2019 - [info] Master is down! Fri Jun 14 10:01:07 2019 - [info] Terminating monitoring script. Fri Jun 14 10:01:07 2019 - [info] Got exit code 20 (Master dead). Fri Jun 14 10:01:07 2019 - [info] MHA::MasterFailover version 0.58. Fri Jun 14 10:01:07 2019 - [info] Starting master failover. Fri Jun 14 10:01:07 2019 - [info] Fri Jun 14 10:01:07 2019 - [info] * Phase 1: Configuration Check Phase.. Fri Jun 14 10:01:07 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] GTID failover mode = 1 Fri Jun 14 10:01:08 2019 - [info] Dead Servers: Fri Jun 14 10:01:08 2019 - [info] 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Checking master reachability via MySQL(double check)... Fri Jun 14 10:01:08 2019 - [info] ok. Fri Jun 14 10:01:08 2019 - [info] Alive Servers: Fri Jun 14 10:01:08 2019 - [info] 10.0.20.202(10.0.20.202:3306) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.203(10.0.20.203:3306) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.204(10.0.20.204:3306) Fri Jun 14 10:01:08 2019 - [info] Alive Slaves: Fri Jun 14 10:01:08 2019 - [info] 10.0.20.202(10.0.20.202:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Primary candidate for the new Master (candidate_master is set) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.203(10.0.20.203:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.204(10.0.20.204:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Starting GTID based failover. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] ** Phase 1: Configuration Check Phase completed. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 2: Dead Master Shutdown Phase.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] Forcing shutdown so that applications never connect to the current master.. Fri Jun 14 10:01:08 2019 - [info] Executing master IP deactivation script: Fri Jun 14 10:01:08 2019 - [info] /etc/mha/scripts/master_ip_failover --orig_master_host=10.0.20.201 --orig_master_ip=10.0.20.201 --orig_master_port=3306 --command=stopssh --ssh_user=root IN SCRIPT TEST====/sbin/ifconfig bond0:1 down==/sbin/ifconfig bond0:1 10.0.20.199/24===Disabling the VIP on old master: 10.0.20.201 Fri Jun 14 10:01:08 2019 - [info] done. Fri Jun 14 10:01:08 2019 - [warning] shutdown_script is not set. Skipping explicit shutting down of the dead master. Fri Jun 14 10:01:08 2019 - [info] * Phase 2: Dead Master Shutdown Phase completed. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 3: Master Recovery Phase.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 3.1: Getting Latest Slaves Phase.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] The latest binary log file/position on all slaves is mysql-bin.000004:194 Fri Jun 14 10:01:08 2019 - [info] Retrieved Gtid Set: 6211616e-8db3-11e9-be15-005056990727:3-5 Fri Jun 14 10:01:08 2019 - [info] Latest slaves (Slaves that received relay log files to the latest): Fri Jun 14 10:01:08 2019 - [info] 10.0.20.202(10.0.20.202:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Primary candidate for the new Master (candidate_master is set) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.203(10.0.20.203:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.204(10.0.20.204:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] The oldest binary log file/position on all slaves is mysql-bin.000004:194 Fri Jun 14 10:01:08 2019 - [info] Retrieved Gtid Set: 6211616e-8db3-11e9-be15-005056990727:3-5 Fri Jun 14 10:01:08 2019 - [info] Oldest slaves: Fri Jun 14 10:01:08 2019 - [info] 10.0.20.202(10.0.20.202:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Primary candidate for the new Master (candidate_master is set) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.203(10.0.20.203:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] 10.0.20.204(10.0.20.204:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 3.3: Determining New Master Phase.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] Searching new master from slaves.. Fri Jun 14 10:01:08 2019 - [info] Candidate masters from the configuration file: Fri Jun 14 10:01:08 2019 - [info] 10.0.20.202(10.0.20.202:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 10:01:08 2019 - [info] GTID ON Fri Jun 14 10:01:08 2019 - [info] Replicating from 10.0.20.201(10.0.20.201:3306) Fri Jun 14 10:01:08 2019 - [info] Primary candidate for the new Master (candidate_master is set) Fri Jun 14 10:01:08 2019 - [info] Non-candidate masters: Fri Jun 14 10:01:08 2019 - [info] Searching from candidate_master slaves which have received the latest relay log events.. Fri Jun 14 10:01:08 2019 - [info] New master is 10.0.20.202(10.0.20.202:3306) Fri Jun 14 10:01:08 2019 - [info] Starting master failover.. Fri Jun 14 10:01:08 2019 - [info] From: 10.0.20.201(10.0.20.201:3306) (current master)+--10.0.20.202(10.0.20.202:3306)+--10.0.20.203(10.0.20.203:3306)+--10.0.20.204(10.0.20.204:3306)To: 10.0.20.202(10.0.20.202:3306) (new master)+--10.0.20.203(10.0.20.203:3306)+--10.0.20.204(10.0.20.204:3306) Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 3.3: New Master Recovery Phase.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] Waiting all logs to be applied.. Fri Jun 14 10:01:08 2019 - [info] done. Fri Jun 14 10:01:08 2019 - [info] Getting new master's binlog name and position.. Fri Jun 14 10:01:08 2019 - [info] mysql-bin.000002:194 Fri Jun 14 10:01:08 2019 - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='10.0.20.202', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='xxx'; Fri Jun 14 10:01:08 2019 - [info] Master Recovery succeeded. File:Pos:Exec_Gtid_Set: mysql-bin.000002, 194, 6211616e-8db3-11e9-be15-005056990727:4-5 Fri Jun 14 10:01:08 2019 - [info] Executing master IP activate script: Fri Jun 14 10:01:08 2019 - [info] /etc/mha/scripts/master_ip_failover --command=start --ssh_user=root --orig_master_host=10.0.20.201 --orig_master_ip=10.0.20.201 --orig_master_port=3306 --new_master_host=10.0.20.202 --new_master_ip=10.0.20.202 --new_master_port=3306 --new_master_user='root' --new_master_password=xxx Unknown option: new_master_user Unknown option: new_master_passwordIN SCRIPT TEST====/sbin/ifconfig bond0:1 down==/sbin/ifconfig bond0:1 10.0.20.199/24===Enabling the VIP - 10.0.20.199/24 on the new master - 10.0.20.202 Fri Jun 14 10:01:08 2019 - [info] OK. Fri Jun 14 10:01:08 2019 - [info] ** Finished master recovery successfully. Fri Jun 14 10:01:08 2019 - [info] * Phase 3: Master Recovery Phase completed. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 4: Slaves Recovery Phase.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] * Phase 4.1: Starting Slaves in parallel.. Fri Jun 14 10:01:08 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] -- Slave recovery on host 10.0.20.203(10.0.20.203:3306) started, pid: 2838. Check tmp log /var/log/mha/10.0.20.203_3306_20190614100107.log if it takes time.. Fri Jun 14 10:01:08 2019 - [info] -- Slave recovery on host 10.0.20.204(10.0.20.204:3306) started, pid: 2839. Check tmp log /var/log/mha/10.0.20.204_3306_20190614100107.log if it takes time.. Fri Jun 14 10:01:09 2019 - [info] Fri Jun 14 10:01:09 2019 - [info] Log messages from 10.0.20.204 ... Fri Jun 14 10:01:09 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] Resetting slave 10.0.20.204(10.0.20.204:3306) and starting replication from the new master 10.0.20.202(10.0.20.202:3306).. Fri Jun 14 10:01:08 2019 - [info] Executed CHANGE MASTER. Fri Jun 14 10:01:08 2019 - [info] Slave started. Fri Jun 14 10:01:08 2019 - [info] gtid_wait(6211616e-8db3-11e9-be15-005056990727:4-5) completed on 10.0.20.204(10.0.20.204:3306). Executed 0 events. Fri Jun 14 10:01:09 2019 - [info] End of log messages from 10.0.20.204. Fri Jun 14 10:01:09 2019 - [info] -- Slave on host 10.0.20.204(10.0.20.204:3306) started. Fri Jun 14 10:01:10 2019 - [info] Fri Jun 14 10:01:10 2019 - [info] Log messages from 10.0.20.203 ... Fri Jun 14 10:01:10 2019 - [info] Fri Jun 14 10:01:08 2019 - [info] Resetting slave 10.0.20.203(10.0.20.203:3306) and starting replication from the new master 10.0.20.202(10.0.20.202:3306).. Fri Jun 14 10:01:08 2019 - [info] Executed CHANGE MASTER. Fri Jun 14 10:01:09 2019 - [info] Slave started. Fri Jun 14 10:01:09 2019 - [info] gtid_wait(6211616e-8db3-11e9-be15-005056990727:4-5) completed on 10.0.20.203(10.0.20.203:3306). Executed 0 events. Fri Jun 14 10:01:10 2019 - [info] End of log messages from 10.0.20.203. Fri Jun 14 10:01:10 2019 - [info] -- Slave on host 10.0.20.203(10.0.20.203:3306) started. Fri Jun 14 10:01:10 2019 - [info] All new slave servers recovered successfully. Fri Jun 14 10:01:10 2019 - [info] Fri Jun 14 10:01:10 2019 - [info] * Phase 5: New master cleanup phase.. Fri Jun 14 10:01:10 2019 - [info] Fri Jun 14 10:01:10 2019 - [info] Resetting slave info on the new master.. Fri Jun 14 10:01:10 2019 - [info] 10.0.20.202: Resetting slave info succeeded. Fri Jun 14 10:01:10 2019 - [info] Master failover to 10.0.20.202(10.0.20.202:3306) completed successfully. Fri Jun 14 10:01:10 2019 - [info] Deleted server1 entry from /etc/mha/app1.cnf . Fri Jun 14 10:01:10 2019 - [info] ----- Failover Report -----app1: MySQL Master failover 10.0.20.201(10.0.20.201:3306) to 10.0.20.202(10.0.20.202:3306) succeededMaster 10.0.20.201(10.0.20.201:3306) is down!Check MHA Manager logs at manager.mha:/var/log/mha/manager.log for details.Started automated(non-interactive) failover. Invalidated master IP address on 10.0.20.201(10.0.20.201:3306) Selected 10.0.20.202(10.0.20.202:3306) as a new master. 10.0.20.202(10.0.20.202:3306): OK: Applying all logs succeeded. 10.0.20.202(10.0.20.202:3306): OK: Activated master IP address. 10.0.20.204(10.0.20.204:3306): OK: Slave started, replicating from 10.0.20.202(10.0.20.202:3306) 10.0.20.203(10.0.20.203:3306): OK: Slave started, replicating from 10.0.20.202(10.0.20.202:3306) 10.0.20.202(10.0.20.202:3306): Resetting slave info succeeded. Master failover to 10.0.20.202(10.0.20.202:3306) completed successfully. Fri Jun 14 10:01:10 2019 - [info] Sending mail..% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed 100 347 100 45 100 302 133 897 --:--:-- --:--:-- --:--:-- 898

    由上面的日志以及各節點狀態看出,vip已經自動漂移到node02的服務器上,并且node02自動提升為主庫,node03 和 node04 自動同步node02的庫。

    同時也收到了微信和郵件告警。

    自動切換步驟

    從上面的輸出可以看出整個 MHA 的切換過程,共包括以下的步驟:

  • 配置文件檢查階段,這個階段會檢查整個集群配置文件配置
  • 宕機的 master 處理,這個階段包括虛擬 ip 摘除操作,主機關機操作(由于沒有定義power_manager腳本,不會關機)
  • 復制 dead maste 和最新 slave 相差的 relay log,并保存到 MHA Manger 具體的目錄下
  • 識別含有最新更新的 slave
  • 應用從 master 保存的二進制日志事件(binlog events)(這點信息對于將故障master修復后加入集群很重要)
  • 提升一個 slave 為新的 master 進行復制
  • 使其他的 slave 連接新的 master 進行復制
  • 修復后重新加入集群

    切換完成后,關注如下變化:

  • vip 自動從原來的 master 切換到新的 master,同時,manager 節點的監控進程自動退出。
  • 在日志目錄(/var/log/mha/app1)產生一個 app1.failover.complete 文件
  • /etc/mha/app1.cnf 配置文件中原來老的 master 配置被刪除。
  • 模擬宕機的時候,停止了MySQL進程,現在重新啟動MySQL,并加入到Node02 的從庫中

    node02 操作

    [root@node02 ~]# mysql -uroot -p123456 -e 'show master status\G' mysql: [Warning] Using a password on the command line interface can be insecure. *************************** 1. row ***************************File: mysql-bin.000002Position: 194Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 6211616e-8db3-11e9-be15-005056990727:4-5

    node01 操作

    mysql> change master to master_host='10.0.20.202',master_user='repl',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=194; Query OK, 0 rows affected, 2 warnings (0.00 sec)mysql> start slave; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye [root@node01 ~]# mysql -uroot -p123456 -e "show slave status\G" | egrep 'Master_Host|Slave_IO_Running|Slave_SQL_Running' mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 10.0.20.202Slave_IO_Running: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for more updates

    manager 操作

    需要注意的是,當發生宕機切換后,manager中的MHA進程會自動停止,在修復后,需要手動再次啟動

    當發生宕機切換,MHA會自動把宕機的信息從app1.cnf配置文件中刪除,修復后機器,要把信息重新寫入到app1.cnf中。

    修改前

    [root@manager mha]# pwd /etc/mha [root@manager mha]# cat app1.cnf [server2] candidate_master=1 check_repl_delay=0 hostname=10.0.20.202 port=3306[server3] hostname=10.0.20.203 port=3306[server4] hostname=10.0.20.204 port=3306

    修改后

    [root@manager mha]# cat app1.cnf [server1] candidate_master=1 check_repl_delay=0 hostname=10.0.20.201[server2] hostname=10.0.20.202 port=3306[server3] hostname=10.0.20.203 port=3306[server4] hostname=10.0.20.204 port=3306

    重新啟動MHA

    修改好配置文件后,再次啟動MHA即可

    nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

    此時修復完成。


    在線進行切換

    在許多情況下, 需要將現有的主服務器遷移到另外一臺服務器上。 比如主服務器硬件故障,RAID 控制卡需要重建,將主服務器移到性能更好的服務器上等等。維護主服務器引起性能下降, 導致停機時間至少無法寫入數據。 另外, 阻塞或殺掉當前運行的會話會導致主主之間數據不一致的問題發生。 MHA 提供快速切換和優雅的阻塞寫入,這個切換過程只需要 0.5-2s 的時間,這段時間內數據是無法寫入的。在很多情況下,0.5-2s 的阻塞寫入是可以接受的。因此切換主服務器不需要計劃分配維護時間窗口。

    MHA在線切換的大概過程:

  • 檢測復制設置和確定當前主服務器
  • 確定新的主服務器
  • 阻塞寫入到當前主服務器
  • 等待所有從服務器趕上復制
  • 授予寫入到新的主服務器
  • 重新設置從服務器
  • 注意,在線切換的時候應用架構需要考慮以下兩個問題:

  • 自動識別master和slave的問題(master的機器可能會切換),如果采用了vip的方式,基本可以解決這個問題。
  • 負載均衡的問題(可以定義大概的讀寫比例,每臺機器可承擔的負載比例,當有機器離開集群時,需要考慮這個問題)
  • 為了保證數據完全一致性,在最快的時間內完成切換,MHA的在線切換必須滿足以下條件才會切換成功,否則會切換失敗。

  • 所有slave的IO線程都在運行
  • 所有slave的SQL線程都在運行
  • 所有的show slave status的輸出中Seconds_Behind_Master參數小于或者等于running_updates_limit秒,如果在切換過程中不指定running_updates_limit,那么默認情況下running_updates_limit為1秒。
  • 在master端,通過show processlist輸出,沒有一個更新花費的時間大于running_updates_limit秒。
  • 停止MHA 的manager 監控

    [root@manager mha]# masterha_stop --conf=/etc/mha/app1.cnf Stopped app1 successfully. [1]+ Exit 1 nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1

    執行切換命令

    進行在線切換操作

    模擬在線切換主庫操作,原主庫10.0.20.202變為slave,10.0.20.201提升為新的主庫

    上一次進行了模擬宕機測試,最開始的主庫是201,切換到了202位主庫了

    [root@manager mha]# masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=10.0.20.201 --orig_master_is_new_slave --running_updates_limit=10000 --interactive=0

    執行后輸出的日志如下:

    Fri Jun 14 11:30:26 2019 - [info] MHA::MasterRotate version 0.58. Fri Jun 14 11:30:26 2019 - [info] Starting online master switch.. Fri Jun 14 11:30:26 2019 - [info] Fri Jun 14 11:30:26 2019 - [info] * Phase 1: Configuration Check Phase.. Fri Jun 14 11:30:26 2019 - [info] Fri Jun 14 11:30:26 2019 - [info] Reading default configuration from /etc/masterha_default.cnf.. Fri Jun 14 11:30:26 2019 - [info] Reading application default configuration from /etc/mha/app1.cnf.. Fri Jun 14 11:30:26 2019 - [info] Reading server configuration from /etc/mha/app1.cnf.. Fri Jun 14 11:30:27 2019 - [info] GTID failover mode = 1 Fri Jun 14 11:30:27 2019 - [info] Current Alive Master: 10.0.20.202(10.0.20.202:3306) Fri Jun 14 11:30:27 2019 - [info] Alive Slaves: Fri Jun 14 11:30:27 2019 - [info] 10.0.20.201(10.0.20.201:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 11:30:27 2019 - [info] GTID ON Fri Jun 14 11:30:27 2019 - [info] Replicating from 10.0.20.202(10.0.20.202:3306) Fri Jun 14 11:30:27 2019 - [info] Primary candidate for the new Master (candidate_master is set) Fri Jun 14 11:30:27 2019 - [info] 10.0.20.203(10.0.20.203:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 11:30:27 2019 - [info] GTID ON Fri Jun 14 11:30:27 2019 - [info] Replicating from 10.0.20.202(10.0.20.202:3306) Fri Jun 14 11:30:27 2019 - [info] 10.0.20.204(10.0.20.204:3306) Version=5.7.18-log (oldest major version between slaves) log-bin:enabled Fri Jun 14 11:30:27 2019 - [info] GTID ON Fri Jun 14 11:30:27 2019 - [info] Replicating from 10.0.20.202(10.0.20.202:3306) Fri Jun 14 11:30:27 2019 - [info] Executing FLUSH NO_WRITE_TO_BINLOG TABLES. This may take long time.. Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] Checking MHA is not monitoring or doing failover.. Fri Jun 14 11:30:27 2019 - [info] Checking replication health on 10.0.20.201.. Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] Checking replication health on 10.0.20.203.. Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] Checking replication health on 10.0.20.204.. Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] 10.0.20.201 can be new master. Fri Jun 14 11:30:27 2019 - [info] From: 10.0.20.202(10.0.20.202:3306) (current master)+--10.0.20.201(10.0.20.201:3306)+--10.0.20.203(10.0.20.203:3306)+--10.0.20.204(10.0.20.204:3306)To: 10.0.20.201(10.0.20.201:3306) (new master)+--10.0.20.203(10.0.20.203:3306)+--10.0.20.204(10.0.20.204:3306)+--10.0.20.202(10.0.20.202:3306) Fri Jun 14 11:30:27 2019 - [info] Checking whether 10.0.20.201(10.0.20.201:3306) is ok for the new master.. Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] 10.0.20.202(10.0.20.202:3306): SHOW SLAVE STATUS returned empty result. To check replication filtering rules, temporarily executing CHANGE MASTER to a dummy host. Fri Jun 14 11:30:27 2019 - [info] 10.0.20.202(10.0.20.202:3306): Resetting slave pointing to the dummy host. Fri Jun 14 11:30:27 2019 - [info] ** Phase 1: Configuration Check Phase completed. Fri Jun 14 11:30:27 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] * Phase 2: Rejecting updates Phase.. Fri Jun 14 11:30:27 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] Executing master ip online change script to disable write on the current master: Fri Jun 14 11:30:27 2019 - [info] /etc/mha/scripts/master_ip_online_change --command=stop --orig_master_host=10.0.20.202 --orig_master_ip=10.0.20.202 --orig_master_port=3306 --orig_master_user='root' --new_master_host=10.0.20.201 --new_master_ip=10.0.20.201 --new_master_port=3306 --new_master_user='root' --orig_master_ssh_user=root --new_master_ssh_user=root --orig_master_is_new_slave --orig_master_password=xxx --new_master_password=xxx****************************Disabled thi VIP - 10.0.20.199/24 on old master: 10.0.20.202 Disabled the VIP successfully ***************************Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] Locking all tables on the orig master to reject updates from everybody (including root): Fri Jun 14 11:30:27 2019 - [info] Executing FLUSH TABLES WITH READ LOCK.. Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] Orig master binlog:pos is mysql-bin.000002:194. Fri Jun 14 11:30:27 2019 - [info] Waiting to execute all relay logs on 10.0.20.201(10.0.20.201:3306).. Fri Jun 14 11:30:27 2019 - [info] master_pos_wait(mysql-bin.000002:194) completed on 10.0.20.201(10.0.20.201:3306). Executed 0 events. Fri Jun 14 11:30:27 2019 - [info] done. Fri Jun 14 11:30:27 2019 - [info] Getting new master's binlog name and position.. Fri Jun 14 11:30:27 2019 - [info] mysql-bin.000005:194 Fri Jun 14 11:30:27 2019 - [info] All other slaves should start replication from here. Statement should be: CHANGE MASTER TO MASTER_HOST='10.0.20.201', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='xxx'; Fri Jun 14 11:30:27 2019 - [info] Executing master ip online change script to allow write on the new master: Fri Jun 14 11:30:27 2019 - [info] /etc/mha/scripts/master_ip_online_change --command=start --orig_master_host=10.0.20.202 --orig_master_ip=10.0.20.202 --orig_master_port=3306 --orig_master_user='root' --new_master_host=10.0.20.201 --new_master_ip=10.0.20.201 --new_master_port=3306 --new_master_user='root' --orig_master_ssh_user=root --new_master_ssh_user=root --orig_master_is_new_slave --orig_master_password=xxx --new_master_password=xxx*************************Enabling the VIP - 10.0.20.199/24 on new master: 10.0.20.201 Enabled the VIP successfully ***************************Fri Jun 14 11:30:27 2019 - [info] ok. Fri Jun 14 11:30:27 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] * Switching slaves in parallel.. Fri Jun 14 11:30:27 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] -- Slave switch on host 10.0.20.203(10.0.20.203:3306) started, pid: 7081 Fri Jun 14 11:30:27 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] -- Slave switch on host 10.0.20.204(10.0.20.204:3306) started, pid: 7082 Fri Jun 14 11:30:27 2019 - [info] Fri Jun 14 11:30:29 2019 - [info] Log messages from 10.0.20.203 ... Fri Jun 14 11:30:29 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] Waiting to execute all relay logs on 10.0.20.203(10.0.20.203:3306).. Fri Jun 14 11:30:27 2019 - [info] master_pos_wait(mysql-bin.000002:194) completed on 10.0.20.203(10.0.20.203:3306). Executed 0 events. Fri Jun 14 11:30:27 2019 - [info] done. Fri Jun 14 11:30:27 2019 - [info] Resetting slave 10.0.20.203(10.0.20.203:3306) and starting replication from the new master 10.0.20.201(10.0.20.201:3306).. Fri Jun 14 11:30:27 2019 - [info] Executed CHANGE MASTER. Fri Jun 14 11:30:28 2019 - [info] Slave started. Fri Jun 14 11:30:29 2019 - [info] End of log messages from 10.0.20.203 ... Fri Jun 14 11:30:29 2019 - [info] Fri Jun 14 11:30:29 2019 - [info] -- Slave switch on host 10.0.20.203(10.0.20.203:3306) succeeded. Fri Jun 14 11:30:29 2019 - [info] Log messages from 10.0.20.204 ... Fri Jun 14 11:30:29 2019 - [info] Fri Jun 14 11:30:27 2019 - [info] Waiting to execute all relay logs on 10.0.20.204(10.0.20.204:3306).. Fri Jun 14 11:30:27 2019 - [info] master_pos_wait(mysql-bin.000002:194) completed on 10.0.20.204(10.0.20.204:3306). Executed 0 events. Fri Jun 14 11:30:27 2019 - [info] done. Fri Jun 14 11:30:27 2019 - [info] Resetting slave 10.0.20.204(10.0.20.204:3306) and starting replication from the new master 10.0.20.201(10.0.20.201:3306).. Fri Jun 14 11:30:27 2019 - [info] Executed CHANGE MASTER. Fri Jun 14 11:30:28 2019 - [info] Slave started. Fri Jun 14 11:30:29 2019 - [info] End of log messages from 10.0.20.204 ... Fri Jun 14 11:30:29 2019 - [info] Fri Jun 14 11:30:29 2019 - [info] -- Slave switch on host 10.0.20.204(10.0.20.204:3306) succeeded. Fri Jun 14 11:30:29 2019 - [info] Unlocking all tables on the orig master: Fri Jun 14 11:30:29 2019 - [info] Executing UNLOCK TABLES.. Fri Jun 14 11:30:29 2019 - [info] ok. Fri Jun 14 11:30:29 2019 - [info] Starting orig master as a new slave.. Fri Jun 14 11:30:29 2019 - [info] Resetting slave 10.0.20.202(10.0.20.202:3306) and starting replication from the new master 10.0.20.201(10.0.20.201:3306).. Fri Jun 14 11:30:29 2019 - [info] Executed CHANGE MASTER. Fri Jun 14 11:30:30 2019 - [info] Slave started. Fri Jun 14 11:30:30 2019 - [info] All new slave servers switched successfully. Fri Jun 14 11:30:30 2019 - [info] Fri Jun 14 11:30:30 2019 - [info] * Phase 5: New master cleanup phase.. Fri Jun 14 11:30:30 2019 - [info] Fri Jun 14 11:30:30 2019 - [info] 10.0.20.201: Resetting slave info succeeded. Fri Jun 14 11:30:30 2019 - [info] Switching master to 10.0.20.201(10.0.20.201:3306) completed successfully.

    查看狀態

    node01

    [root@node01 ~]# mysql -uroot -p123456 -e 'show slave status\G' mysql: [Warning] Using a password on the command line interface can be insecure. [root@node01 ~]# ip a | grep 20inet 10.0.20.201/24 brd 10.0.20.255 scope global bond0inet 10.0.20.199/24 brd 10.0.20.255 scope global secondary bond0:1

    node02

    [root@node02 ~]# mysql -uroot -p123456 -e "show slave status\G" | egrep 'Master_Host|Slave_IO_Running|Slave_SQL_Running' mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 10.0.20.201Slave_IO_Running: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for more updates [root@node02 ~]# ip a | grep 20inet 10.0.20.202/24 brd 10.0.20.255 scope global bond0

    node03

    [root@node03 ~]# mysql -uroot -p123456 -e "show slave status\G" | egrep 'Master_Host|Slave_IO_Running|Slave_SQL_Running' mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 10.0.20.201Slave_IO_Running: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for more updates

    node04

    [root@node04 ~]# mysql -uroot -p123456 -e "show slave status\G" | egrep 'Master_Host|Slave_IO_Running|Slave_SQL_Running' mysql: [Warning] Using a password on the command line interface can be insecure.Master_Host: 10.0.20.201Slave_IO_Running: YesSlave_SQL_Running: YesSlave_SQL_Running_State: Slave has read all relay log; waiting for more updates

    從上面各個數據庫的狀態可以看出來,主庫已經變成了node01了,并且vip也漂移到node01的機器上了。

    轉載于:https://www.cnblogs.com/winstom/p/11022014.html

    總結

    以上是生活随笔為你收集整理的MySQL 高可用架构 之 MHA (Centos 7.5 MySQL 5.7.18 MHA 0.58)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    国产专区在线视频 | 免费99精品国产自在在线 | 日韩v欧美v日本v亚洲v国产v | 欧美久草网 | 亚洲视频2 | 日韩欧美在线观看 | 97视频人人免费看 | 色综合久 | 人人草网站| 色婷婷视频 | 国产午夜精品一区二区三区在线观看 | 欧美一区三区四区 | 91精品天码美女少妇 | 国产一区视频在线观看免费 | 国产又粗又猛又爽又黄的视频免费 | 亚洲免费国产视频 | 免费在线观看av网址 | 天天夜夜亚洲 | 亚洲a网 | 国产精品激情在线观看 | 久热久草在线 | 日韩视频一区二区 | 在线黄色av电影 | 国产五月色婷婷六月丁香视频 | av网站免费在线 | 欧美午夜久久 | 97色视频在线 | 日韩免费一级a毛片在线播放一级 | 久久久久二区 | 日韩欧美视频在线播放 | 在线观看一区视频 | 在线观看的a站 | 婷婷成人综合 | 国产亚洲欧美精品久久久久久 | 91av成人| 色偷偷97 | 欧美精品二 | 国产综合在线观看视频 | 在线免费看黄色 | 日韩av电影免费观看 | 热久久免费国产视频 | 韩国av一区二区 | 不卡av免费在线观看 | av综合av | www.在线看片.com | 国产精品高清免费在线观看 | 亚洲综合色激情五月 | 中文字幕在线看 | 美女一二三区 | 精品久久美女 | 97精品视频在线播放 | 一区二区三区在线播放 | 色综合激情网 | 午夜影视一区 | 国产亚洲免费观看 | 在线观看免费中文字幕 | 久久久久久久久久久久99 | 久久精品国产久精国产 | a视频在线播放 | 欧美日韩国产伦理 | 久草免费福利在线观看 | 日韩av影片在线观看 | 久久99这里只有精品 | 97超碰人人看 | 成人播放器 | 亚洲禁18久人片 | 最新影院| 黄色.com| 色91在线 | 香蕉视频在线免费 | 激情六月婷婷久久 | 亚洲三级国产 | 欧美日韩一级久久久久久免费看 | 久久久精品欧美一区二区免费 | 毛片黄色一级 | 久久黄页| 在线播放国产精品 | 91人人射 | 精品亚洲一区二区三区 | 性色av一区二区 | 免费亚洲成人 | 午夜精品久久久久久久99无限制 | 免费看黄在线观看 | 人九九精品 | 免费看短 | 亚洲永久精品视频 | 色91在线 | 日韩免费在线观看视频 | 欧美一级xxxx| 一区二区影院 | 亚洲撸撸| 蜜臀aⅴ国产精品久久久国产 | 国产九色91 | a v在线观看| 亚洲一区二区精品 | 国产中文字幕免费 | 久久国产精品偷 | 在线色视频小说 | av短片在线 | 国产成人61精品免费看片 | 亚洲情婷婷 | 手机在线看a | 日韩在线二区 | 欧美亚洲免费在线一区 | 日本精品一 | 日韩av在线高清 | 天天色天天 | 亚洲人成人在线 | 国产日韩中文在线 | 中文 一区二区 | 一区二区三区免费在线播放 | 亚洲少妇激情 | 亚洲第一区在线观看 | 亚洲日本va午夜在线影院 | 亚洲电影网站 | 欧美一区二区三区激情视频 | 日韩三级一区 | 超级碰99 | 日韩成片 | 欧美二区三区91 | 天天摸日日操 | 九九精品久久久 | 人人爽人人澡人人添人人人人 | 精品国产一区二区三区久久 | 色婷婷av国产精品 | 久久大片网站 | 久久美女免费视频 | 少妇视频在线播放 | 欧美日韩在线免费观看视频 | 开心综合网 | 免费黄色a级毛片 | 久久久18| 亚洲精品456在线播放第一页 | 欧美 日韩 国产 中文字幕 | 国产精品一区二区av | 特级西西444www大精品视频免费看 | 久久夜色电影 | 欧美性生交大片免网 | 日批网站免费观看 | 人人插人人艹 | 久久狠狠一本精品综合网 | 在线99视频| 国产在线观看,日本 | 一级特黄av | 91女神的呻吟细腰翘臀美女 | 成人av资源网站 | 欧美a√大片 | 中文字幕国产视频 | 久久久久久亚洲精品 | 91在线公开视频 | 中文字幕在线观看2018 | 国产精品久99 | 热久久免费视频 | 国产精品女同一区二区三区久久夜 | 日韩av成人 | 精品久久美女 | 精品国产网址 | 中文在线免费一区三区 | 九九热精品国产 | 一级黄色免费 | av久久久| 伊人超碰在线 | 又黄又爽又色无遮挡免费 | 国产精品区免费视频 | 在线午夜电影神马影院 | 丁香六月激情 | 高清精品在线 | www看片网站| 国产精品国产三级国产aⅴ入口 | 精品一区二区免费在线观看 | 国产v视频 | 久草在线中文888 | 国产精品中文在线 | 国产视频第二页 | 亚洲免费色 | 色香蕉在线 | 在线观看精品一区 | 亚洲精品乱码久久久久v最新版 | 在线免费观看黄色大片 | 成人在线观看影院 | www九九热| 久久精品—区二区三区 | 国产色在线,com | www.伊人网 | 天天爽天天爽天天爽 | 香蕉视频色 | 欧美91在线| 成人av免费电影 | 麻豆精品传媒视频 | av天天干 | 国产精品午夜在线观看 | 色网免费观看 | av久久久久久 | 久久久综合香蕉尹人综合网 | 精品国产乱码久久久久久1区二区 | 亚洲精品小视频 | 久久久国产精华液 | 韩国av电影在线观看 | 亚洲国产人午在线一二区 | 国产精品午夜8888 | 国产精品99久久久久久人免费 | 亚洲无在线 | 99在线视频精品 | 三级黄在线 | 色综合亚洲精品激情狠狠 | 亚洲成人一二三 | 日韩在线高清免费视频 | 国产一区播放 | 狠狠操在线 | 久久亚洲私人国产精品va | 日韩爱爱片| 有码视频在线观看 | 国产精品123| 成人黄色小说视频 | 久久人人爽人人爽人人 | www.色就是色 | www.av免费观看 | 性色av免费在线观看 | 日本中文字幕在线观看 | 亚洲www天堂com | 国产高清区 | 国产精品一码二码三码在线 | 欧美男男激情videos | 91黄色在线看 | 日韩欧美一区二区三区在线 | 黄在线免费看 | 园产精品久久久久久久7电影 | 久久97久久97精品免视看 | 免费h精品视频在线播放 | 五月色综合 | 精品国产一区在线观看 | 日韩av一卡二卡三卡 | 免费麻豆视频 | 亚洲国产剧情av | 毛片的网址 | 996久久国产精品线观看 | 天天做天天看 | 最新久久久 | 久久手机看片 | 国产免费一区二区三区网站免费 | 丁香 婷婷 激情 | 91九色蝌蚪视频 | av专区在线| 一级黄色片在线观看 | 亚洲精品麻豆 | 超碰人人91 | 久久精品站| 亚洲精品国产电影 | 色婷婷精品大在线视频 | 日本午夜在线观看 | 欧美做受高潮1 | 国产v在线播放 | 久久精精品视频 | 欧美成亚洲 | 视频在线观看一区 | 亚洲欧美日韩精品久久久 | 国内久久视频 | 91视频免费看 | 国产精品18久久久久久vr | av手机版 | 国产品久精国精产拍 | 久久综合九色综合97_ 久久久 | 久久a v视频 | 日韩有码中文字幕在线 | 国产剧情久久 | 99精品欧美一区二区三区黑人哦 | 国产美女视频免费观看的网站 | 久久国产精品电影 | 精品一区二区在线免费观看 | 国产黄色精品在线 | 91一区在线观看 | 日韩精品一区二区三区免费观看视频 | 狠狠色丁香婷婷综合久小说久 | 免费能看的av | 国产精品6| 91精品久久久久久久91蜜桃 | 亚洲国产精彩中文乱码av | 成人91av | 91chinesexxx | 久久人人精 | 久久调教视频 | 久爱精品在线 | 麻豆成人在线观看 | 天堂在线视频中文网 | 亚洲丝袜一区 | 日韩av男人的天堂 | 午夜精品区 | av手机版 | 五月天久久狠狠 | 91视频久久 | 国产日韩欧美在线 | 久久天天躁夜夜躁狠狠85麻豆 | av成人免费在线 | 久久国产热视频 | 亚洲精品高清一区二区三区四区 | 成人免费中文字幕 | 五月婷婷欧美视频 | 久久久受www免费人成 | 久久综合五月 | 久久久久免费观看 | 亚洲精品国产麻豆 | 91精品影视 | 97网站| 国产专区视频在线 | 91精品免费在线观看 | 在线观看视频日韩 | 国产精品系列在线 | 国产福利一区二区三区视频 | 五月婷婷婷婷婷 | 日韩欧美精品一区二区三区经典 | 91cn国产在线 | 久久99热这里只有精品国产 | 成人91免费视频 | 久久综合狠狠狠色97 | 久久精品美女视频网站 | 97精品国产一二三产区 | 500部大龄熟乱视频使用方法 | 久久久久 免费视频 | www.玖玖玖 | 成人av网址大全 | 国产亚洲精品成人 | 久久任你操 | 免费色av | 精品在线看 | 激情综合中文娱乐网 | 亚洲三级在线免费观看 | www中文在线 | 一区二区激情 | 国产成人一区二区三区久久精品 | 国产中文在线视频 | 国产精品久久久久av福利动漫 | 免费网站在线观看成人 | 久久久久久久久久久免费视频 | 欧美日韩精品二区第二页 | 成人av高清在线 | 精品视频久久久久久 | 国产精品高清在线观看 | 国产亚洲欧美在线视频 | 久久躁日日躁aaaaxxxx | 毛片精品免费在线观看 | 久久久久久美女 | 日日夜夜av | 天天干天天拍天天操天天拍 | 国产乱老熟视频网88av | 综合影视 | 久久伊99综合婷婷久久伊 | 久久精品女人毛片国产 | 亚洲午夜av电影 | av电影 一区二区 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产精品久久三 | 成人av亚洲 | 亚洲激情小视频 | 免费观看十分钟 | 人人插人人艹 | 午夜精选视频 | 日本h视频在线观看 | 黄色毛片大全 | 91精品国产欧美一区二区成人 | 色狠狠一区二区 | 亚洲精品乱码久久久久久蜜桃91 | 中文字幕在线电影 | 91在线入口 | 国产精品高| 天天综合成人 | 中文字幕色在线 | 国产一区二区在线看 | 91看成人 | 欧美在线久久 | 色偷偷88888欧美精品久久 | 一区二区三区视频网站 | 国产又黄又硬又爽 | 综合色亚洲 | 91在线播放视频 | 亚洲传媒在线 | 久久久久美女 | 一本一道久久a久久综合蜜桃 | 香蕉影视在线观看 | 精品国产免费人成在线观看 | 麻豆91精品视频 | 成人免费影院 | 五月婷婷播播 | 91成人蝌蚪 | 国产成人精品一区二区三区网站观看 | 国产精品毛片完整版 | 九九欧美视频 | 国产色综合 | 激情五月婷婷综合网 | 一本色道久久综合亚洲二区三区 | 国产资源在线视频 | 国产精品久久久久久婷婷天堂 | 国产成人一区二区三区 | av免费在线播放 | 91成人精品| 亚洲精品视频在线播放 | 国产精品国产亚洲精品看不卡 | 99色国产| 免费进去里的视频 | 天天操操 | 国产精品久久久久毛片大屁完整版 | 91社区国产高清 | 欧美一级片在线播放 | 99在线免费观看视频 | www日韩在线| 欧美巨大荫蒂茸毛毛人妖 | 日韩黄色软件 | 91漂亮少妇露脸在线播放 | 欧美一二三视频 | 黄色毛片网站在线观看 | 91入口在线观看 | 久久综合免费视频影院 | 在线成人免费电影 | 亚洲精品成人网 | 国产乱老熟视频网88av | 久久99婷婷 | 亚洲片在线资源 | 在线天堂中文在线资源网 | 麻豆精品视频在线观看免费 | 国色天香第二季 | 日韩高清观看 | 亚洲日韩精品欧美一区二区 | 三级视频日韩 | 久久久亚洲麻豆日韩精品一区三区 | 国产精品久久久久毛片大屁完整版 | 视频直播国产精品 | 男女全黄一级一级高潮免费看 | 久久激情综合网 | 激情视频综合网 | 欧美性生活一级片 | 国产亚洲精品久久久久久久久久久久 | 国产精品麻豆果冻传媒在线播放 | 特黄免费av | 久久草视频 | 狠狠色丁香婷综合久久 | 中文字幕免费一区 | 国产精品免费麻豆入口 | 中文字幕免费观看全部电影 | 91麻豆精品国产91久久久更新时间 | 久久久精品网 | 久操视频在线观看 | 99在线视频观看 | 色www精品视频在线观看 | 88av视频| 欧美成人中文字幕 | 91亚色免费视频 | 欧美日韩1区 | 激情综合网在线观看 | 亚洲免费专区 | 国产黄影院色大全免费 | 欧美日韩在线观看一区二区三区 | 精品电影一区 | 在线视频app | 在线日韩三级 | 日本三级久久 | av一级片网站 | 亚欧日韩成人h片 | 精品在线观看一区二区 | 日批视频 | 夜夜躁狠狠躁日日躁视频黑人 | 精品美女国产在线 | 国产精品一区二区三区免费视频 | 国产91粉嫩白浆在线观看 | 色999在线| 日日操夜夜操狠狠操 | 免费视频一二三区 | 亚洲国内在线 | 久久综合中文色婷婷 | 国产成人久久av免费高清密臂 | 久久免视频| av在线8| 久久综合九色99 | 国产色拍| 国产精品一区二区av麻豆 | 丝袜美女视频网站 | 99精品黄色| 欧美性猛片,| 成人福利av| 99国内精品久久久久久久 | 91成人精品在线 | 久久免费视频2 | 日韩偷拍精品 | 麻豆影视在线播放 | 国产综合精品一区二区三区 | 日韩在线视频线视频免费网站 | 91色偷偷 | 成人午夜电影免费在线观看 | 国产精品成人一区二区 | 91麻豆网站 | 麻豆综合网 | 久久永久视频 | 国产精品免费观看网站 | 欧美亚洲另类在线视频 | 97精品在线视频 | 亚洲欧洲精品一区二区精品久久久 | 欧美日韩精品久久久 | 国产一级在线 | 色丁香婷婷 | 欧美激情综合网 | 911国产精品 | 国产99久久久国产精品成人免费 | 国产精品久久伊人 | 蜜臀一区二区三区精品免费视频 | 国产成人免费在线 | 国产精品手机看片 | 欧美最新大片在线看 | 一区二区精品视频 | 精品国产精品国产偷麻豆 | 又黄又爽的视频在线观看网站 | 国内精品久久久久久久久久久久 | 91精品国自产拍天天拍 | 国产一区二区三区在线免费观看 | 夜夜躁天天躁很躁波 | 久久亚洲电影 | 99热国内精品 | 日韩免费一级a毛片在线播放一级 | 国产精品视频久久 | 久久久精品影视 | 五月婷网站| 久久官网| 欧美日韩亚洲在线观看 | 免费观看视频黄 | 99r在线精品 | 成年人在线看视频 | 中文字幕在线播放一区 | 亚洲精品国产精品国自产在线 | 欧美日本在线视频 | 狠狠操电影网 | 久久久久免费网站 | www.91国产 | 久久久久久久久艹 | 人人草人人草 | 精品自拍sae8—视频 | av在线电影网站 | 国产精品人人做人人爽人人添 | 91桃色在线播放 | 97成人在线观看视频 | 久久精品99视频 | 日批视频在线 | 夜夜夜夜操 | 丁香六月婷婷开心 | 国产亚洲午夜高清国产拍精品 | 美女很黄免费网站 | 少妇搡bbbb搡bbb搡69 | a天堂中文在线 | 美女国产 | 日本高清免费中文字幕 | 国产91亚洲 | 成人免费观看av | 国产在线国偷精品产拍免费yy | 久久三级视频 | 色资源网免费观看视频 | 中文字幕在线观看第一区 | 三级av小说| 二区三区在线观看 | 丰满少妇麻豆av | 国产福利小视频在线 | 黄色亚洲片 | 日韩大片在线看 | av丝袜在线| 欧美成年人在线视频 | 午夜精品久久久久久 | 亚洲影院色 | 91免费版在线观看 | 91在线资源| 国产一区不卡在线 | 成年人在线观看免费视频 | 91精品视频在线观看免费 | 中文字幕精品www乱入免费视频 | 黄av免费| 日本中文字幕在线播放 | 午夜丰满寂寞少妇精品 | 午夜精品一区二区三区在线 | 久久人人爽人人爽 | 久久久久亚洲最大xxxx | 久久久国产精品一区二区三区 | 国产精品久久久亚洲 | 国产精品国产亚洲精品看不卡15 | 亚洲免费av在线 | 一级特黄av | 免费av看片| 91精品视频观看 | 成年人免费在线看 | 久久午夜精品影院一区 | 日韩视频a| 狠狠色丁香婷婷综合最新地址 | 国产1级毛片 | 人人澡人人舔 | 国产一级视频在线 | 亚洲精品一区二区三区四区高清 | 一级片免费在线 | 91最新中文字幕 | 看毛片的网址 | 国产一级小视频 | 国产在线黄色 | 午夜精品一区二区三区在线视频 | 精品国产自在精品国产精野外直播 | 中文字幕在线影院 | 国产视频1| 亚洲精品在线免费观看视频 | 97超碰人人澡 | 成人av在线影视 | 综合国产视频 | 国产成人精品一二三区 | 麻豆国产精品视频 | 成年人在线 | 波多野结衣久久资源 | 麻豆视频免费在线播放 | 日韩一级片观看 | 天天天色综合 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 亚洲视频每日更新 | 夜夜操天天干, | 久久久999 | 久久视屏网 | 国产精品成人在线观看 | 久久精品国产一区二区三区 | 天天色中文 | 国产精品亚洲成人 | 久久免费美女视频 | 亚洲电影影音先锋 | 精品视频亚洲 | 免费91麻豆精品国产自产在线观看 | 日本免费一二三区 | 国产成人久久av977小说 | av片一区 | 日本丰满少妇免费一区 | 天堂av网址| 亚洲国产中文字幕在线观看 | 久久精品欧美日韩精品 | av免费在线看网站 | 国产黄视频在线观看 | 日日夜日日干 | 日日草天天干 | 亚洲国内精品视频 | 一区二区三区高清在线 | 亚洲国产精品成人va在线观看 | 国产成人一区二区三区在线观看 | 亚洲黄色免费在线 | 亚洲国产精品999 | 日韩精品一区二区久久 | 天堂va在线高清一区 | 国产一区国产精品 | 伊人狠狠操 | av在线电影网站 | 亚洲天堂网在线视频 | 99999精品| 91在线免费公开视频 | 91麻豆精品久久久久久 | 色综合中文综合网 | 国产资源在线免费观看 | 色五月成人| 在线视频app | 午夜精品视频免费在线观看 | 99r国产精品 | 日韩影视大全 | 中文字幕国产一区 | 国产清纯在线 | 国产第一福利网 | 欧美精品久久久久久久久老牛影院 | 一区二区三区三区在线 | 91视频传媒 | 五月天婷婷在线播放 | 国产精品av在线 | 一区二区三区不卡在线 | 国产成人精品999在线观看 | 免费大片黄在线 | 国产手机在线播放 | 超碰av在线播放 | 亚洲精选视频免费看 | 国产成人一区二区精品非洲 | 欧美日韩在线电影 | 四虎永久免费网站 | 亚洲人成网站精品片在线观看 | 日日干精品| 狠狠狠色丁香婷婷综合久久88 | av片中文| 国产精品一区免费看8c0m | 天天操天天色天天射 | 欧美日本不卡高清 | 久久91网 | 欧美日韩国产在线精品 | 色先锋av资源中文字幕 | free,性欧美 九九交易行官网 | 久草| 欧美黄网站| 精品专区一区二区 | av爱干| 国产乱对白刺激视频在线观看女王 | 黄色小说视频网站 | 婷婷六月天在线 | av电影在线观看 | 日韩欧美国产免费播放 | 亚洲国产高清在线观看视频 | 久久久久成人精品 | 日本不卡一区二区 | 成人国产精品久久久久久亚洲 | 国产无限资源在线观看 | 久久久久北条麻妃免费看 | 久九视频 | 91超碰免费在线 | 91探花国产综合在线精品 | 国产一区二区三区午夜 | 91网免费看 | 最近日韩免费视频 | 日韩av偷拍 | 天天插天天狠 | 久久久久久久亚洲精品 | 欧美,日韩 | 99久久久久国产精品免费 | 九九综合九九 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 又紧又大又爽精品一区二区 | 久久国产精品一区二区三区四区 | 国产成人av免费在线观看 | 欧美精品久久久久 | 婷婷六月天综合 | 午夜视频导航 | 国产小视频免费观看 | 最新国产在线 | 九九色网| 国模精品一区二区三区 | 日韩理论电影网 | 国产精品男女视频 | 欧美另类tv | 国产一级免费av | 国产精品18久久久久久久久久久久 | 丁香九月婷婷综合 | 激情www| 91麻豆国产福利在线观看 | 色狠狠狠 | 丁香 久久 综合 | 探花视频在线版播放免费观看 | 香蕉视频国产在线观看 | 91在线视频一区 | 国产精品免费一区二区三区 | 国产黄色精品在线 | 久久伦理影院 | 一级黄色在线免费观看 | 中文字幕免费一区 | 亚洲在线成人精品 | 操高跟美女 | 亚洲精品高清在线 | 999久久久免费精品国产 | 日日操日日干 | 欧美极品在线播放 | 成人黄色片免费 | 99视频国产在线 | 亚洲成a人片77777kkkk1在线观看 | 91九色在线观看视频 | 最新中文字幕视频 | 91在线麻豆| 久久国产精品影视 | 国产精品乱码一区二三区 | 国产成人在线网站 | 国产精品专区在线 | 亚洲精品美女久久久久 | 亚洲天天干| 亚洲精品视频第一页 | 色欧美综合 | 国产精品乱码久久久久久1区2区 | 中文字幕av日韩 | 欧美一区日韩精品 | 日韩电影精品 | 久久久精品国产免费观看同学 | 国产一二区视频 | 操操操操网 | 欧美日韩首页 | 日韩欧美综合 | 中文字幕五区 | 国产成人精品亚洲精品 | 91av在线电影| 不卡的av在线| av夜夜操 | 国产中文字幕大全 | www.天天色 | 一级一片免费看 | 国内精品免费久久影院 | 在线观看av大片 | 亚洲国产理论片 | 人人超碰人人 | 一区中文字幕在线观看 | 亚洲精品国产精品乱码在线观看 | 国产中文字幕91 | 国产精品久久久久一区二区 | bbb搡bbb爽爽爽 | 亚洲国产成人精品电影在线观看 | 日韩欧美一区二区三区免费观看 | 精品免费观看视频 | 久久国产精品第一页 | 国产成人精品久久久 | 西西大胆免费视频 | 国产精品久久久久久久妇 | 日韩一区二区三区在线看 | 日韩精品专区在线影院重磅 | 日韩r级电影在线观看 | 热久久99这里有精品 | 国产精品毛片一区二区三区 | 国产精品av在线免费观看 | 中文字幕日韩av | 狠狠色伊人亚洲综合网站野外 | 99综合电影在线视频 | 91黄色在线视频 | 欧美日韩免费网站 | av福利在线导航 | 欧美视频99 | 国产夫妻av在线 | 一区二区免费不卡在线 | 久久r精品 | 天天色棕合合合合合合 | 日本久久久久久久久久久 | 成x99人av在线www | 91亚洲精品乱码久久久久久蜜桃 | 亚洲精品中文在线资源 | 又黄又网站| 日本一区二区三区免费观看 | 天天操综合网 | 国产大尺度视频 | 人人爽人人| 日免费视频 | 国产精品入口66mio女同 | av综合在线观看 | 免费网站看v片在线a | av中文国产 | 97免费视频在线播放 | 免费在线观看不卡av | 日韩av午夜| 亚洲美女免费视频 | 国产免码va在线观看免费 | 99视频在线精品国自产拍免费观看 | 99久久99视频 | 在线小视频 | 伊人亚洲精品 | 色久综合 | 国产亚洲欧美一区 | 国产精品一区二区美女视频免费看 | av在线成人| 亚洲免费在线观看视频 | 天天操天天干天天爱 | 成人免费大片黄在线播放 | 四虎在线免费观看 | 精品亚洲va在线va天堂资源站 | 美国av大片 | 久草视频在线资源 | 日韩视频精品在线 | 精品国产123 | 国产资源精品在线观看 | 夜夜爽夜夜操 | 中文字幕 国产视频 | 成人免费一级片 | 久久国产精品第一页 | 91视频-88av | 国产亚洲欧美日韩高清 | 国产97碰免费视频 | 一区 二区电影免费在线观看 | 久久艹在线 | 免费成人黄色 | 一本一本久久a久久精品综合妖精 | 精品视频99| 午夜精品久久久久久久99水蜜桃 | 日韩电影在线观看一区二区 | 91在线你懂的 | 国产99久久久欧美黑人 | 麻豆视频免费在线播放 | 日日夜夜天天 | 国产在线观看黄 | 91视频xxxx| 日韩免费福利 | 亚洲最大免费成人网 | 色偷偷88888欧美精品久久久 | 国产精品一区二区精品视频免费看 | 亚洲艳情| 久久婷婷网 | 久久久91精品国产一区二区三区 | 国产免费久久精品 | 亚洲综合成人在线 | 狠狠操.com | 最近中文字幕大全中文字幕免费 | 99久久电影 | 福利视频一区二区 | 高清视频一区二区三区 | 日韩精品欧美精品 | 免费国产在线精品 | 成人免费观看a | 精品在线视频一区二区三区 | 天天干天天操天天干 | 国产在线精品一区二区三区 | 欧美日韩视频在线观看一区二区 | 久久久精品在线观看 | 黄色软件大全网站 | 国产真实精品久久二三区 | 国产精品v a免费视频 | 91电影福利 | 久草网站在线 | 天天操天天干天天综合网 | 婷婷播播网 | 天天射天天爱天天干 | 97电影院在线观看 | 国产精品 中文字幕 亚洲 欧美 | 天天色天天上天天操 | 亚洲综合成人在线 | 激情久久久久久久久久久久久久久久 | 九九视频精品在线 | 久久成人高清视频 | 国产尤物在线视频 | 日日干夜夜操视频 | 97精品国自产拍在线观看 | 婷婷综合亚洲 | 九九热在线免费观看 | 麻豆手机在线 | 日韩在线视频网址 | 日批视频国产 | 久久久一本精品99久久精品 | 国产日产精品一区二区三区四区的观看方式 | 亚洲日本va在线观看 | 99精品久久久久久久久久综合 | av一级二级 | 亚洲三区在线 | 亚洲成a人片综合在线 | 亚洲午夜不卡 | 免费国产视频 | 91一区啪爱嗯打偷拍欧美 | 日韩福利在线观看 | www视频免费在线观看 | 亚洲精品国产精品国自 | 精品一区在线看 | 日本黄色免费网站 | 亚洲欧美成人综合 | 免费av 在线 | 人人超在线公开视频 | 久青草电影 | 伊人色综合久久天天 | 色噜噜在线观看 | 精品欧美在线视频 | 日韩美精品视频 | 天天爱天天操天天爽 | 一区二区av | 免费视频久久久久 | 久久精品视频在线 | 亚洲视频一级 | 成人久久18免费网站麻豆 | 九九在线视频免费观看 | 又黄又爽又色无遮挡免费 | 成年人免费电影在线观看 | 午夜婷婷在线播放 | 欧美日韩不卡在线 | 国产成人专区 | 欧美久久久久久 | 在线观看视频在线 | 亚洲精品资源 | 免费在线观看日韩 | 久久精品一区二 | 91亚洲影院| 日本精品视频在线 | 日韩一区二区免费播放 | 亚洲色影爱久久精品 | 亚洲日本国产 | 久久精品国产久精国产 | av丁香| 国产99自拍 | 天天操天天曰 | 成人动漫精品一区二区 | 欧美日韩一区二区三区在线观看视频 | 精品国产精品国产偷麻豆 | 久久一区二区免费视频 | 超碰av免费| 五月婷婷黄色网 | 日韩精品免费一线在线观看 | 中文字幕a在线 | 国产九九九九九 | 99产精品成人啪免费网站 | 有码一区二区三区 | 国内成人综合 | 欧美日韩国产色综合一二三四 | 色在线免费| 亚州精品天堂中文字幕 | 久草视频在线观 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 91在线视频网址 | 亚洲精品高清在线观看 | 国产一区二区免费在线观看 | 亚洲精品综合一二三区在线观看 | 激情电影在线观看 | 免费91在线观看 | 亚洲一区美女视频在线观看免费 | 美女视频黄是免费的 | 特级aaa毛片 | 中文字幕在线高清 | 日日草av| 中文字幕资源网 国产 | 国产亚洲日本 | 午夜精品一区二区三区在线 | 欧美日韩在线观看不卡 | 精品国产一区二区三区噜噜噜 | 亚洲国产一区在线观看 | 成人资源在线观看 | 992tv又爽又黄的免费视频 | 国产97在线播放 | 久久综合综合久久综合 |