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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

backupexec mysql_MySQL备份可能遇到的坑

發(fā)布時(shí)間:2025/3/8 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 backupexec mysql_MySQL备份可能遇到的坑 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL備份工具,支持各種參數(shù)選項(xiàng),使用不同的選項(xiàng)極有可能影響備份處理過程。本文使用我們常規(guī)認(rèn)為合理的備份參數(shù),測試/驗(yàn)證是否存在容易忽視的坑

# 常規(guī)備份參數(shù)

# mysqldump

shell> mysqldump --single-transaction --master-data=2 -B replcrash >dbname_dump_serverid_`date +%Y%m%d`.sql

# mysqlpump

shell> mysqlpump --single-transaction -B replcrash >dbname_pump_serverid_`date +%Y%m%d`.sql

# mydumper

shell> mydumper -B replcrash -o /data/backup/mydumper

# XtraBackup

# backup

shell> innobackupex [--defaults-file=MY.CNF] BACKUP-ROOT-DIR

# apply-log

shell> innobackupex --apply-log [--defaults-file=MY.CNF] BACKUP-DIR

# copy-back

shell> innobackupex --copy-back [--defaults-file=MY.CNF] BACKUP-DIR

常規(guī)備份參數(shù)

ROLE

HOSTNAME

BASEDIR

DATADIR

IP

PORT

Master

ZST1

/usr/local/mysql

/data/mysql/mysql3306/data

192.168.85.132

3306

Slave

ZST1

/usr/local/mysql

/data/mysql/mysql3308/data

192.168.85.132

3308

官方社區(qū)版MySQL 5.7.19 基于Row+Position搭建的一主一從異步復(fù)制結(jié)構(gòu):Master->{Slave}。每次使用備份文件還原數(shù)據(jù)庫后,重新搭建這個(gè)復(fù)制結(jié)構(gòu)

備份工具版本:mysqldump、mysqlpump是MySQL 5.7.19中自帶的;mydumper version?0.9.3、innobackupex version 2.4.8

一、mysqldump

1.1、DML操作對備份的影響

創(chuàng)建兩張測試表

# 創(chuàng)建兩張測試表(192.168.85.132,3306)usereplcrash;create tablepy_user_innodb(

uidint not nullauto_increment,

namevarchar(32),

add_timedatetime default current_timestamp,

server_idvarchar(10),primary key(uid),key(name)

)engine=innodb;create tablepy_user_myisam(

uidint not nullauto_increment,

namevarchar(32),

add_timedatetime default current_timestamp,

server_idvarchar(10),primary key(uid),key(name)

)engine=myisam;

View Code

運(yùn)行下面的腳本持續(xù)往測試表中寫入數(shù)據(jù)

#!/user/bin/python

importstringimportrandomimportMySQLdbimporttime

conn= MySQLdb.connect(host=‘192.168.85.132‘,

port=3306,

user=‘mydba‘,

passwd=‘mysql5719‘,

db=‘replcrash‘)"""create table py_user(

uid int not null auto_increment,

name varchar(32),

add_time datetime default current_timestamp,

server_id varchar(10),

primary key(uid),

key(name)

);"""

whileTrue:

r_name= ‘‘.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(random.randint(20,30)))printr_name

cursor=conn.cursor()

cursor.execute("insert into py_user_myisam(name,add_time,server_id) values(‘%s‘,now(),@@server_id);" %str(r_name))

cursor.execute("insert into py_user_innodb(name,add_time,server_id) values(‘%s‘,now(),@@server_id);" %str(r_name))

conn.commit()

time.sleep(0.001)

Python DML

開啟general_log,用來查看mysqldump執(zhí)行過程

# 開啟general_log

mydba@192.168.85.132,3306 [replcrash]> set global general_log_file=‘/data/mysql/mysql3306/data/mysql-general.log‘;

mydba@192.168.85.132,3306 [replcrash]> set global general_log=1;

# 清空general_log

[root@ZST1 logs]#cat /dev/null > /data/mysql/mysql3306/data/mysql-general.log

# 備份replcrash數(shù)據(jù)庫

[root@ZST1 backup]# mysqldump-h127.0.0.1 -P3306 -uroot -p --single-transaction --master-data=2 replcrash >/data/backup/replcrash_dump_1323306_`date +%Y%m%d`.sql

View Code

使用備份文件搭建復(fù)制

# 還原實(shí)例清空GTID信息

mydba@192.168.85.132,3308 [replcrash]>reset master;

# 還原數(shù)據(jù)

[root@ZST1 backup]# mysql-h127.0.0.1 -P3308 -uroot -p replcrash

# 搭建復(fù)制

mydba@192.168.85.132,3308 [replcrash]>change master to

master_host=‘192.168.85.132‘,

master_port=3306,

master_user=‘repl‘,

master_password=‘repl‘,

master_auto_position=1;

# 啟動(dòng)復(fù)制,查看復(fù)制狀態(tài)

mydba@192.168.85.132,3308 [replcrash]>start slave;

mydba@192.168.85.132,3308 [replcrash]>show slave status\G*************************** 1. row ***************************Master_Log_File: mysql-bin.000183Read_Master_Log_Pos:1541377Relay_Log_File: relay-bin.000002Relay_Log_Pos:741Relay_Master_Log_File: mysql-bin.000183Slave_IO_Running: Yes

Slave_SQL_Running: No

Exec_Master_Log_Pos:1042768Last_SQL_Errno:1062Last_SQL_Error: Could not execute Write_rows event on table replcrash.py_user_myisam; Duplicate entry‘332‘ for key ‘PRIMARY‘, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event‘‘s master log mysql-bin.000183, end_log_pos 1043062Retrieved_Gtid_Set: 8ab82362-9c37-11e7-a858-000c29c1025c:251874-253268Executed_Gtid_Set: 8ab82362-9c37-11e7-a858-000c29c1025c:1-251874Auto_Position:1

View Code

從上面的結(jié)果中可以看到,主鍵沖突了,在從庫查詢一下這個(gè)表中大于等于沖突key的數(shù)據(jù)

# 查詢從庫出錯(cuò)表大于等于沖突key的數(shù)據(jù)

mydba@192.168.85.132,3308 [replcrash]> select * from replcrash.py_user_myisam where uid>=332;+-----+--------------------------------+---------------------+-----------+

| uid | name | add_time | server_id |

+-----+--------------------------------+---------------------+-----------+

| 332 | X1LME9HO5V7WXNOKBVZE | 2018-01-02 09:05:07 | 1323306 |

| 333 | 2PBFQ7KS4BPIJ27G88EYXWEDSX5 | 2018-01-02 09:05:07 | 1323306 |

| 334 | E85Y2SS9UD0FZG4YGCNTRSWA8L | 2018-01-02 09:05:07 | 1323306 |

| 335 | Y2TQOEVJ58NN7EREL4WRZ | 2018-01-02 09:05:07 | 1323306 |

| 336 | O0MEATAXYIAE2V2IZG96YVQ56WEUHF | 2018-01-02 09:05:07 | 1323306 |

| 337 | A6QKRWEXHRGUA3V2CH61VXUNBVA3H2 | 2018-01-02 09:05:07 | 1323306 |

| 338 | NYCSI1HS61BN6QAVVYTZSC | 2018-01-02 09:05:07 | 1323306 |

| 339 | 7CFC1JQPIQGNC97MDTT8ZIMIZL7D | 2018-01-02 09:05:07 | 1323306 |

| 340 | GA78AR4Z12WQTEAM41JB | 2018-01-02 09:05:07 | 1323306 |

+-----+--------------------------------+---------------------+-----------+

9 rows in set (0.08 sec)

View Code

我們查看mysqldump備份文件獲取的binlog pos

[root@ZST1 backup]# morereplcrash_dump_1323306_20180102.sql--GTID state at the beginning of the backup

SET @@GLOBAL.GTID_PURGED=‘8ab82362-9c37-11e7-a858-000c29c1025c:1-251873‘;-- Position to start replication or point-in-timerecovery from-- CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000183‘, MASTER_LOG_POS=1042441;

[root@ZST1 backup]#

View Code

這里的pos信息是mysqldump通過SHOW MASTER STATUS獲取。查看mysqldump得到的general-log;

[root@ZST1 data]# vim /data/mysql/mysql3306/data/mysql-general.log

...2018-01-02T01:05:07.693104Z 10 Query FLUSH /*!40101 LOCAL*/TABLES2018-01-02T01:05:07.694738Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘7ATZSNFNIBW5DZNMNZYBMV‘,now(),@@server_id)2018-01-02T01:05:07.701616Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘7ATZSNFNIBW5DZNMNZYBMV‘,now(),@@server_id)2018-01-02T01:05:07.702139Z 10Query FLUSH TABLES WITH READ LOCK2018-01-02T01:05:07.702344Z 9Query commit2018-01-02T01:05:07.702411Z 10Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ2018-01-02T01:05:07.702597Z 10 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT*/

2018-01-02T01:05:07.702721Z 10 Query SHOW VARIABLES LIKE ‘gtid\_mode‘

2018-01-02T01:05:07.713019Z 10Query SELECT @@GLOBAL.GTID_EXECUTED2018-01-02T01:05:07.713179Z 10Query SHOW MASTER STATUS2018-01-02T01:05:07.725821Z 10Query UNLOCK TABLES2018-01-02T01:05:07.732125Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘X1LME9HO5V7WXNOKBVZE‘,now(),@@server_id)2018-01-02T01:05:07.733237Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘X1LME9HO5V7WXNOKBVZE‘,now(),@@server_id)2018-01-02T01:05:07.734240Z 9Query commit2018-01-02T01:05:07.740508Z 10 Query SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = ‘UNDO LOG‘ AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IN (SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = ‘DATAFILE‘ AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN (‘replcrash‘))) GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME2018-01-02T01:05:07.741895Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘2PBFQ7KS4BPIJ27G88EYXWEDSX5‘,now(),@@server_id)2018-01-02T01:05:07.742720Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘2PBFQ7KS4BPIJ27G88EYXWEDSX5‘,now(),@@server_id)2018-01-02T01:05:07.743257Z 9Query commit2018-01-02T01:05:07.749840Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘E85Y2SS9UD0FZG4YGCNTRSWA8L‘,now(),@@server_id)2018-01-02T01:05:07.750588Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘E85Y2SS9UD0FZG4YGCNTRSWA8L‘,now(),@@server_id)2018-01-02T01:05:07.750989Z 9Query commit2018-01-02T01:05:07.754180Z 10 Query SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = ‘DATAFILE‘ AND TABLESPACE_NAME IN (SELECT DISTINCT TABLESPACE_NAME FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA IN (‘replcrash‘)) ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME2018-01-02T01:05:07.756229Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘Y2TQOEVJ58NN7EREL4WRZ‘,now(),@@server_id)2018-01-02T01:05:07.757030Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘Y2TQOEVJ58NN7EREL4WRZ‘,now(),@@server_id)2018-01-02T01:05:07.757598Z 9Query commit2018-01-02T01:05:07.763629Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘O0MEATAXYIAE2V2IZG96YVQ56WEUHF‘,now(),@@server_id)2018-01-02T01:05:07.764626Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘O0MEATAXYIAE2V2IZG96YVQ56WEUHF‘,now(),@@server_id)2018-01-02T01:05:07.765654Z 9Query commit2018-01-02T01:05:07.766769Z 10 Query SHOW VARIABLES LIKE ‘ndbinfo\_version‘

2018-01-02T01:05:07.773997Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘A6QKRWEXHRGUA3V2CH61VXUNBVA3H2‘,now(),@@server_id)2018-01-02T01:05:07.774757Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘A6QKRWEXHRGUA3V2CH61VXUNBVA3H2‘,now(),@@server_id)2018-01-02T01:05:07.775198Z 9Query commit2018-01-02T01:05:07.779582Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘NYCSI1HS61BN6QAVVYTZSC‘,now(),@@server_id)2018-01-02T01:05:07.780174Z 10Init DB replcrash2018-01-02T01:05:07.780249Z 10Query SAVEPOINT sp2018-01-02T01:05:07.780913Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘NYCSI1HS61BN6QAVVYTZSC‘,now(),@@server_id)2018-01-02T01:05:07.781387Z 9Query commit2018-01-02T01:05:07.781776Z 10Query show tables2018-01-02T01:05:07.782078Z 10 Query show table status like ‘py\_user‘

2018-01-02T01:05:07.782400Z 10 Query SET SQL_QUOTE_SHOW_CREATE=1

2018-01-02T01:05:07.782513Z 10 Query SET SESSION character_set_results = ‘binary‘

2018-01-02T01:05:07.787051Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘7CFC1JQPIQGNC97MDTT8ZIMIZL7D‘,now(),@@server_id)2018-01-02T01:05:07.787810Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘7CFC1JQPIQGNC97MDTT8ZIMIZL7D‘,now(),@@server_id)2018-01-02T01:05:07.788502Z 9Query commit2018-01-02T01:05:07.788774Z 10Query show create table `py_user`2018-01-02T01:05:07.789570Z 10 Query SET SESSION character_set_results = ‘utf8‘

2018-01-02T01:05:07.789725Z 10Query show fields from `py_user`2018-01-02T01:05:07.790423Z 10Query show fields from `py_user`2018-01-02T01:05:07.791163Z 10 Query SELECT /*!40001 SQL_NO_CACHE*/ *FROM `py_user`2018-01-02T01:05:07.791447Z 10 Query SET SESSION character_set_results = ‘binary‘

2018-01-02T01:05:07.791648Z 10Query use `replcrash`2018-01-02T01:05:07.791778Z 10 Query select@@collation_database2018-01-02T01:05:07.791929Z 10 Query SHOW TRIGGERS LIKE ‘py\_user‘

2018-01-02T01:05:07.792383Z 10 Query SET SESSION character_set_results = ‘utf8‘

2018-01-02T01:05:07.792492Z 10Query ROLLBACK TO SAVEPOINT sp2018-01-02T01:05:07.792651Z 10 Query show table status like ‘py\_user\_innodb‘

2018-01-02T01:05:07.792874Z 10 Query SET SQL_QUOTE_SHOW_CREATE=1

2018-01-02T01:05:07.792948Z 10 Query SET SESSION character_set_results = ‘binary‘

2018-01-02T01:05:07.793024Z 10Query show create table `py_user_innodb`2018-01-02T01:05:07.793131Z 10 Query SET SESSION character_set_results = ‘utf8‘

2018-01-02T01:05:07.793220Z 10Query show fields from `py_user_innodb`2018-01-02T01:05:07.793607Z 10Query show fields from `py_user_innodb`2018-01-02T01:05:07.793985Z 10 Query SELECT /*!40001 SQL_NO_CACHE*/ *FROM `py_user_innodb`2018-01-02T01:05:07.794435Z 9 Query insert into py_user_myisam(name,add_time,server_id) values(‘GA78AR4Z12WQTEAM41JB‘,now(),@@server_id)2018-01-02T01:05:07.795204Z 9 Query insert into py_user_innodb(name,add_time,server_id) values(‘GA78AR4Z12WQTEAM41JB‘,now(),@@server_id)2018-01-02T01:05:07.795688Z 9Query commit2018-01-02T01:05:07.798108Z 10 Query SET SESSION character_set_results = ‘binary‘

2018-01-02T01:05:07.798205Z 10Query use `replcrash`2018-01-02T01:05:07.798303Z 10 Query select@@collation_database2018-01-02T01:05:07.798408Z 10 Query SHOW TRIGGERS LIKE ‘py\_user\_innodb‘

2018-01-02T01:05:07.798884Z 10 Query SET SESSION character_set_results = ‘utf8‘

2018-01-02T01:05:07.798965Z 10Query ROLLBACK TO SAVEPOINT sp2018-01-02T01:05:07.799049Z 10 Query show table status like ‘py\_user\_myisam‘

2018-01-02T01:05:07.799271Z 10 Query SET SQL_QUOTE_SHOW_CREATE=1

2018-01-02T01:05:07.799344Z 10 Query SET SESSION character_set_results = ‘binary‘

2018-01-02T01:05:07.799420Z 10Query show create table `py_user_myisam`2018-01-02T01:05:07.799554Z 10 Query SET SESSION character_set_results = ‘utf8‘

2018-01-02T01:05:07.799661Z 10Query show fields from `py_user_myisam`2018-01-02T01:05:07.800098Z 10Query show fields from `py_user_myisam`2018-01-02T01:05:07.800418Z 10 Query SELECT /*!40001 SQL_NO_CACHE*/ * FROM `py_user_myisam`

View Code

mysqldump備份過程(--single-transaction --master-data):

會話先執(zhí)行FTWRL(實(shí)例只讀),然后設(shè)置RR隔離級別->START TRANSACTION WITH CONSISTENT SNAPSHOT;->SHOW MASTER STATUS;->UNLOCK TABLES;->SELECT /*!40001 SQL_NO_CACHE */ * FROM `tbname`;

在UNLOCK TABLES解鎖后其他事務(wù)就可以進(jìn)行寫入操作。general-log中我們可看到 UNLOCK TABLES 到 SELECT /*!40001 SQL_NO_CACHE */ * FROM `py_user_myisam` 之間往py_user_myisam、py_user_innodb各寫入9條數(shù)據(jù)

SELECT /*!40001 SQL_NO_CACHE */ * FROM `py_user_innodb`;讀取的是START TRANSACTION WITH CONSISTENT SNAPSHOT建立時(shí)的數(shù)據(jù)

SELECT /*!40001 SQL_NO_CACHE */ * FROM `py_user_myisam`;讀取的是最新的數(shù)據(jù)

再來查看上述過程期間binary log記錄

[root@ZST1 logs]# mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000183 |more...

COMMIT/*!*/;

# at1042059#180102 9:05:07 server id 1323306 end_log_pos 1042124 CRC32 0x221cda50 GTID last_committed=2917 sequence_number=2918 rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;

SET @@SESSION.GTID_NEXT= ‘8ab82362-9c37-11e7-a858-000c29c1025c:251873‘/*!*/;

# at1042124#180102 9:05:07 server id 1323306 end_log_pos 1042209 CRC32 0x5df266e4 Query thread_id=9 exec_time=0 error_code=0SET TIMESTAMP=1514855107/*!*/;

BEGIN/*!*/;

# at1042209#180102 9:05:07 server id 1323306 end_log_pos 1042279 CRC32 0xc1d41c5f Table_map: `replcrash`.`py_user_myisam` mapped to number 254# at1042279#180102 9:05:07 server id 1323306 end_log_pos 1042355 CRC32 0x27badc02 Write_rows: table id 254flags: STMT_END_F

### INSERT INTO `replcrash`.`py_user_myisam`

### SET

### @1=331 /*INT meta=0 nullable=0 is_null=0*/### @2=‘7ATZSNFNIBW5DZNMNZYBMV‘ /*VARSTRING(96) meta=96 nullable=1 is_null=0*/### @3=‘2018-01-02 09:05:07‘ /*DATETIME(0) meta=0 nullable=1 is_null=0*/### @4=‘1323306‘ /*VARSTRING(30) meta=30 nullable=1 is_null=0*/# at1042355#180102 9:05:07 server id 1323306 end_log_pos 1042441 CRC32 0x67285443 Query thread_id=9 exec_time=0 error_code=0SET TIMESTAMP=1514855107/*!*/;

COMMIT/*!*/;

# at1042441

==================== mysqldump備份文件獲取的binlog pos ====================

==================== 備份文件還原后,從庫GTID_PURGED位置 ====================#180102 9:05:07 server id 1323306 end_log_pos 1042506 CRC32 0xf77ede80 GTID last_committed=2918 sequence_number=2919 rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;

SET @@SESSION.GTID_NEXT= ‘8ab82362-9c37-11e7-a858-000c29c1025c:251874‘/*!*/;

# at1042506#180102 9:05:07 server id 1323306 end_log_pos 1042591 CRC32 0x506a2875 Query thread_id=9 exec_time=0 error_code=0SET TIMESTAMP=1514855107/*!*/;

BEGIN/*!*/;

# at1042591#180102 9:05:07 server id 1323306 end_log_pos 1042661 CRC32 0x90b154e8 Table_map: `replcrash`.`py_user_innodb` mapped to number 255# at1042661#180102 9:05:07 server id 1323306 end_log_pos 1042737 CRC32 0x1d693238 Write_rows: table id 255flags: STMT_END_F

### INSERT INTO `replcrash`.`py_user_innodb`

### SET

### @1=331 /*INT meta=0 nullable=0 is_null=0*/### @2=‘7ATZSNFNIBW5DZNMNZYBMV‘ /*VARSTRING(96) meta=96 nullable=1 is_null=0*/### @3=‘2018-01-02 09:05:07‘ /*DATETIME(0) meta=0 nullable=1 is_null=0*/### @4=‘1323306‘ /*VARSTRING(30) meta=30 nullable=1 is_null=0*/# at1042737#180102 9:05:07 server id 1323306 end_log_pos 1042768 CRC32 0x87864022 Xid = 4420COMMIT/*!*/;

# at1042768

==================== 啟動(dòng)復(fù)制后,py_user_innodb寫入uid=331記錄,成功 ====================#180102 9:05:07 server id 1323306 end_log_pos 1042833 CRC32 0xe492578a GTID last_committed=2919 sequence_number=2920 rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;

SET @@SESSION.GTID_NEXT= ‘8ab82362-9c37-11e7-a858-000c29c1025c:251875‘/*!*/;

# at1042833#180102 9:05:07 server id 1323306 end_log_pos 1042918 CRC32 0xf08c4165 Query thread_id=9 exec_time=0 error_code=0SET TIMESTAMP=1514855107/*!*/;

BEGIN/*!*/;

# at1042918#180102 9:05:07 server id 1323306 end_log_pos 1042988 CRC32 0xf16731d6 Table_map: `replcrash`.`py_user_myisam` mapped to number 257# at1042988#180102 9:05:07 server id 1323306 end_log_pos 1043062 CRC32 0x128aec5e Write_rows: table id 257flags: STMT_END_F

### INSERT INTO `replcrash`.`py_user_myisam`

### SET

### @1=332 /*INT meta=0 nullable=0 is_null=0*/### @2=‘X1LME9HO5V7WXNOKBVZE‘ /*VARSTRING(96) meta=96 nullable=1 is_null=0*/### @3=‘2018-01-02 09:05:07‘ /*DATETIME(0) meta=0 nullable=1 is_null=0*/### @4=‘1323306‘ /*VARSTRING(30) meta=30 nullable=1 is_null=0*/# at1043062#180102 9:05:07 server id 1323306 end_log_pos 1043148 CRC32 0x5cc8cc30 Query thread_id=9 exec_time=0 error_code=0SET TIMESTAMP=1514855107/*!*/;

COMMIT/*!*/;

# at1043148

==================== 啟動(dòng)復(fù)制后,py_user_myisam寫入uid=332記錄,失敗 ====================

==================== 從庫py_user_myisam表已存在332記錄,sql_thread停止 ====================#180102 9:05:07 server id 1323306 end_log_pos 1043213 CRC32 0xceb1ce4d GTID last_committed=2920 sequence_number=2921 rbr_only=yes/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;

SET @@SESSION.GTID_NEXT= ‘8ab82362-9c37-11e7-a858-000c29c1025c:251876‘/*!*/;

# at1043213#180102 9:05:07 server id 1323306 end_log_pos 1043298 CRC32 0x38591b71 Query thread_id=9 exec_time=0 error_code=0SET TIMESTAMP=1514855107/*!*/;

BEGIN/*!*/;

# at1043298#180102 9:05:07 server id 1323306 end_log_pos 1043368 CRC32 0xf80c2ae9 Table_map: `replcrash`.`py_user_innodb` mapped to number 258# at1043368#180102 9:05:07 server id 1323306 end_log_pos 1043442 CRC32 0x0bf4ae26 Write_rows: table id 258flags: STMT_END_F

### INSERT INTO `replcrash`.`py_user_innodb`

### SET

### @1=332 /*INT meta=0 nullable=0 is_null=0*/### @2=‘X1LME9HO5V7WXNOKBVZE‘ /*VARSTRING(96) meta=96 nullable=1 is_null=0*/### @3=‘2018-01-02 09:05:07‘ /*DATETIME(0) meta=0 nullable=1 is_null=0*/### @4=‘1323306‘ /*VARSTRING(30) meta=30 nullable=1 is_null=0*/# at1043442#180102 9:05:07 server id 1323306 end_log_pos 1043473 CRC32 0x1b75f9e0 Xid = 4431COMMIT/*!*/;

# at1043473...

View Code

二進(jìn)志日志顯示,按照py_user_myisam->py_user_innodb->py_user_myisam這樣的順序往表中寫入數(shù)據(jù)。

使用備份文件搭建的從庫,py_user_myisam表已包含UNLOCK TABLES之后的9條數(shù)據(jù),但在備份文件中的@@GLOBAL.GTID_PURGED卻是UNLOCK TABLES時(shí)刻的位置。因此在啟動(dòng)復(fù)制后,第一條操作py_user_innodb表成功,第二條操作py_user_myisam表失敗,從庫報(bào)主鍵沖突錯(cuò)誤

那么應(yīng)該如何修復(fù)這個(gè)錯(cuò)誤呢?

# 刪除從庫py_user_myisam表大于等于沖突key的記錄

mydba@192.168.85.132,3308 [replcrash]> delete from py_user_myisam where uid>=332;

# 重新啟動(dòng)sql_thread

mydba@192.168.85.132,3308 [replcrash]> start slave sql_thread;

View Code

總得來說就是只有innodb才會提供一致性備份!!!

1.2、DDL操作對備份的影響

建議先閱讀后續(xù)章節(jié),理解各備份過程后再返回閱讀DDL操作對備份的影響

運(yùn)行下面的腳本持續(xù)DDL操作

#!/user/bin/python

importstringimportrandomimportMySQLdbimporttime

conn= MySQLdb.connect(host=‘192.168.85.132‘,

port=3306,

user=‘mydba‘,

passwd=‘mysql5719‘,

db=‘replcrash‘)"""create table py_user(

uid int not null auto_increment,

name varchar(32),

add_time datetime default current_timestamp,

server_id varchar(10),

primary key(uid),

key(name)

);"""counter= 1

while counter<=100:

addcol= ‘col‘ +str(counter)printaddcol

cursor=conn.cursor()#DDL

cursor.execute("alter table py_user_innodb add %s int;" %addcol)

cursor.execute("alter table py_user_innodb drop column %s;" %addcol)

conn.commit()

counter+= 1time.sleep(0.0001)

Python DDL

邏輯備份數(shù)據(jù)庫

# 清空general_log

[root@ZST1 logs]#cat /dev/null > /data/mysql/mysql3306/data/mysql-general.log

# mysqldump

[root@ZST1 backup]# mysqldump-h127.0.0.1 -P3306 -uroot -p --single-transaction --master-data=2 replcrash >/data/backup/replcrash_dump_1323306_`date +%Y%m%d`.sql

Enter password:

Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don not want to restore GTIDs, pass--set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.

mysqldump: Error1412: Table definition has changed, please retry transaction when dumping table `py_user_innodb` at row: 0# mysqlpump

[root@ZST1 backup]# mysqlpump-h127.0.0.1 -P3306 -uroot -p --single-transaction --add-drop-table --exclude-databases=mysql,sakila,backupdb -A >/data/backup/replcrash_pump_1323306_`date +%Y%m%d`.sql

Enter password:

mysqlpump: [ERROR] (1412) Table definition has changed, please retry transaction

Dump process encountered error and will not continue.

Dump progress:0/3 tables, 250/2431rows

[root@ZST1 backup]#

# mydumper

[root@ZST1 mydumper]# mydumper-h 127.0.0.1 -P 3306 -u root -p mysql5719 --trx-consistency-only -v 3 -t 2 -o /data/backup/mydumper

..** Message: Thread 2 dumping data for`replcrash`.`py_user_innodb`** Message: Thread 1 dumping data for`replcrash`.`py_user_myisam`** (mydumper:5179): CRITICAL **: Could not read data from replcrash.py_user_innodb: Table definition has changed, please retry transaction**Message: Empty table replcrash.py_user_innodb

...

View Code

mydumper需要使用-v 3 顯示詳細(xì)信息,本身是不會報(bào)錯(cuò)的!!!如果想更容易再現(xiàn)錯(cuò)誤,最好是備份的數(shù)據(jù)表較大、較多,適當(dāng)降低并行線程數(shù)(-t),開啟--trx-consistency-only,讓其盡早解鎖

生成的備份文件中,py_user_innodb表只有結(jié)構(gòu),沒有數(shù)據(jù)

根據(jù)備份邏輯,在UNLOCK TABLES解除FTWRL到SELECT /*!40001 SQL_NO_CACHE */ * FROM `tbname`之間如果有DDL操作,就會造成上述錯(cuò)誤

使用了with consistent snapshot子句開啟一致性快照事務(wù)之后,如果一旦表結(jié)構(gòu)定義發(fā)生改變,事務(wù)將無法對該表執(zhí)行查詢

使用WITH CONSISTENT SNAPSHOT子句,會話1顯式開啟一個(gè)事務(wù)之后先不執(zhí)行查詢,會話B使用DDL語句添加一個(gè)字段

會話1

會話2

修改隔離級別為RR

mydba@192.168.85.132,3306 [replcrash]> set tx_isolation=‘repeatable-read‘;

Query OK, 0 rows affected (0.00 sec)

修改隔離級別為RR

mydba@192.168.85.132,3306 [replcrash]> set tx_isolation=‘repeatable-read‘;

Query OK, 0 rows affected (0.00 sec)

顯式開啟一個(gè)事務(wù),先不執(zhí)行查詢

mydba@192.168.85.132,3306 [replcrash]> start transaction with consistent snapshot;

Query OK, 0 rows affected (0.00 sec)

執(zhí)行DDL語句添加字段,執(zhí)行成功

mydba@192.168.85.132,3306 [replcrash]> alter table py_user_innodb add col1 int;

Query OK, 0 rows affected (0.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

執(zhí)行查詢,報(bào)表定義已經(jīng)改變的錯(cuò)誤

mydba@192.168.85.132,3306 [replcrash]> select * from py_user_innodb;

ERROR 1412 (HY000): Table definition has changed, please retry transaction

物理備份數(shù)據(jù)庫

[root@ZST1 backup]# innobackupex --defaults-file=/data/mysql/mysql3306/my.cnf -S /tmp/mysql3306.sock -uroot -pmysql5719 /data/backup/full/

180104 15:29:31 [01] Copying ./sakila/payment.ibd to /data/backup/full/2018-01-04_15-29-21/sakila/payment.ibd180104 15:29:32 [01] ...doneInnoDB: Last flushed lsn:19337348200 load_index lsn 19337354022InnoDB: An optimized (without redo logging) DDLoperation has been performed. All modified pages may not have been flushed to the disk yet.

PXB will not be able take a consistent backup. Retry the backup operation180104 15:29:32 [01] Copying ./replcrash/py_user.ibd to /data/backup/full/2018-01-04_15-29-21/replcrash/py_user.ibd180104 15:29:32 [01] ...done

180104 15:29:32 [01] Copying ./replcrash/py_user_innodb.ibd to /data/backup/full/2018-01-04_15-29-21/replcrash/py_user_innodb.ibd180104 15:29:32 [01] ...done

View Code

只要在備份期間(實(shí)際是備份InnoDB表期間,因?yàn)閭浞輓on-InnoDB表期間會加FTWRL只讀鎖,阻塞DDL、DML操作)執(zhí)行DDL操作,innobackupex就會報(bào)錯(cuò)退出。原因就是DDL操作不會記錄到redo log,PXB will not be able take a consistent backup.

因此備份期間要避免執(zhí)行不記錄事務(wù)日志的操作(ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE)

二、mysqlpump

2.1、備份過程

借助前面已開啟general_log,來查看mysqlpump執(zhí)行過程

MySQL 5.7.11起解決了--single-transaction和--default-parallelism的互斥問題

# 清空general_log

[root@ZST1 logs]#cat /dev/null > /data/mysql/mysql3306/data/mysql-general.log

# 備份replcrash數(shù)據(jù)庫,一致性備份(源碼限制只有備份整個(gè)實(shí)例時(shí)才能返回GTID信息,因此這里使用-A,然后使用--exclude-databases排除不需要備份的db)

[root@ZST1 backup]# mysqlpump-h127.0.0.1 -P3306 -uroot -p --single-transaction --add-drop-table --exclude-databases=mysql,sakila,backupdb -A >/data/backup/replcrash_pump_1323306_`date +%Y%m%d`.sql

默認(rèn)mysqlpump使用一個(gè)隊(duì)列兩個(gè)線程

[root@ZST1 data]# vim/data/mysql/mysql3306/data/mysql-general.log

...4Time Id Command Argument5 2018-01-03T01:24:06.623704Z 14 Connect root@localhost on using TCP/IP6 2018-01-03T01:24:06.631266Z 14Query FLUSH TABLES WITH READ LOCK7 2018-01-03T01:24:06.667093Z 14Query SHOW WARNINGS8 2018-01-03T01:24:06.667310Z 14Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ9 2018-01-03T01:24:06.667520Z 14Query SHOW WARNINGS10 2018-01-03T01:24:06.667647Z 14Query START TRANSACTION WITH CONSISTENT SNAPSHOT11 2018-01-03T01:24:06.667792Z 14Query SHOW WARNINGS12 2018-01-03T01:24:06.679491Z 15 Connect root@localhost on using TCP/IP13 2018-01-03T01:24:06.683019Z 15Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ14 2018-01-03T01:24:06.684865Z 15Query SHOW WARNINGS15 2018-01-03T01:24:06.685015Z 15Query START TRANSACTION WITH CONSISTENT SNAPSHOT16 2018-01-03T01:24:06.685114Z 15Query SHOW WARNINGS17 2018-01-03T01:24:06.686057Z 16 Connect root@localhost on using TCP/IP18 2018-01-03T01:24:06.688856Z 16Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ19 2018-01-03T01:24:06.716231Z 16Query SHOW WARNINGS20 2018-01-03T01:24:06.716447Z 16Query START TRANSACTION WITH CONSISTENT SNAPSHOT21 2018-01-03T01:24:06.716558Z 16Query SHOW WARNINGS22 2018-01-03T01:24:06.716701Z 14Query UNLOCK TABLES23 2018-01-03T01:24:06.716857Z 14Query SHOW WARNINGS

...各種SHOW...1176 2018-01-03T01:24:07.344380Z 16Query SHOW CREATE DATABASE IF NOT EXISTS `replcrash`1177 2018-01-03T01:24:07.344468Z 16Query SHOW WARNINGS1178 2018-01-03T01:24:07.344565Z 16Query SHOW TABLE STATUS FROM `replcrash`1179 2018-01-03T01:24:07.380209Z 16Query SHOW WARNINGS1180 2018-01-03T01:24:07.380416Z 16Query SHOW COLUMNS IN `py_user` FROM `replcrash`1181 2018-01-03T01:24:07.381223Z 16Query SHOW WARNINGS1182 2018-01-03T01:24:07.381408Z 16Query SHOW CREATE TABLE `replcrash`.`py_user`1183 2018-01-03T01:24:07.381614Z 16Query SHOW WARNINGS1184 2018-01-03T01:24:07.381950Z 16 Query SHOW TRIGGERS FROM `replcrash` LIKE ‘py_user‘

1185 2018-01-03T01:24:07.382575Z 16Query SHOW WARNINGS1186 2018-01-03T01:24:07.382764Z 16Query SHOW COLUMNS IN `py_user_innodb` FROM `replcrash`1187 2018-01-03T01:24:07.383125Z 14 Query SET SQL_QUOTE_SHOW_CREATE= 1

1188 2018-01-03T01:24:07.383334Z 14Query SHOW WARNINGS1189 2018-01-03T01:24:07.383617Z 14 Query SET TIME_ZONE=‘+00:00‘

1190 2018-01-03T01:24:07.384037Z 14Query SHOW WARNINGS1191 2018-01-03T01:24:07.385106Z 15 Query SELECT `COLUMN_NAME`, `EXTRA` FROM `INFORMATION_SCHEMA`.`COLUMNS`WHERE TABLE_SCHEMA =‘replcrash‘ AND TABLE_NAME =‘py_user‘

1192 2018-01-03T01:24:07.386099Z 15Query SHOW WARNINGS1193 2018-01-03T01:24:07.386347Z 15Query SELECT SQL_NO_CACHE `uid`,`name`,`add_time`,`server_id` FROM `replcrash`.`py_user`1194 2018-01-03T01:24:07.387102Z 15Query SHOW WARNINGS1195 2018-01-03T01:24:07.387644Z 16Query SHOW WARNINGS1196 2018-01-03T01:24:07.387997Z 16Query SHOW CREATE TABLE `replcrash`.`py_user_innodb`1197 2018-01-03T01:24:07.388216Z 16Query SHOW WARNINGS1198 2018-01-03T01:24:07.388487Z 16 Query SHOW TRIGGERS FROM `replcrash` LIKE ‘py_user_innodb‘

1199 2018-01-03T01:24:07.389053Z 14 Query SELECT `COLUMN_NAME`, `EXTRA` FROM `INFORMATION_SCHEMA`.`COLUMNS`WHERE TABLE_SCHEMA =‘replcrash‘ AND TABLE_NAME =‘py_user_innodb‘

1200 2018-01-03T01:24:07.390054Z 14Query SHOW WARNINGS1201 2018-01-03T01:24:07.390293Z 14Query SELECT SQL_NO_CACHE `uid`,`name`,`add_time`,`server_id` FROM `replcrash`.`py_user_innodb`1202 2018-01-03T01:24:07.391566Z 16Query SHOW WARNINGS1203 2018-01-03T01:24:07.391776Z 16Query SHOW COLUMNS IN `py_user_myisam` FROM `replcrash`1204 2018-01-03T01:24:07.392559Z 16Query SHOW WARNINGS1205 2018-01-03T01:24:07.392747Z 16Query SHOW CREATE TABLE `replcrash`.`py_user_myisam`1206 2018-01-03T01:24:07.393065Z 16Query SHOW WARNINGS1207 2018-01-03T01:24:07.393336Z 16 Query SHOW TRIGGERS FROM `replcrash` LIKE ‘py_user_myisam‘

1208 2018-01-03T01:24:07.394146Z 16Query SHOW WARNINGS1209 2018-01-03T01:24:07.394371Z 16 Query SHOW FUNCTION STATUS WHERE db = ‘replcrash‘

1210 2018-01-03T01:24:07.396083Z 15 Query SELECT `COLUMN_NAME`, `EXTRA` FROM `INFORMATION_SCHEMA`.`COLUMNS`WHERE TABLE_SCHEMA =‘replcrash‘ AND TABLE_NAME =‘py_user_myisam‘

1211 2018-01-03T01:24:07.399053Z 15Query SHOW WARNINGS1212 2018-01-03T01:24:07.399425Z 15Query SELECT SQL_NO_CACHE `uid`,`name`,`add_time`,`server_id` FROM `replcrash`.`py_user_myisam`1213 2018-01-03T01:24:07.405719Z 16Query SHOW WARNINGS1214 2018-01-03T01:24:07.405915Z 16 Query SHOW PROCEDURE STATUS WHERE db = ‘replcrash‘

1215 2018-01-03T01:24:07.412340Z 14Query SHOW WARNINGS1216 2018-01-03T01:24:07.414496Z 15Query SHOW WARNINGS1217 2018-01-03T01:24:07.416755Z 16Query SHOW WARNINGS1218 2018-01-03T01:24:07.417261Z 16Query SHOW EVENTS FROM `replcrash`1219 2018-01-03T01:24:07.417884Z 16 Query SHOW WARNINGS

View Code

即使備份一個(gè)db,general_log中也會出現(xiàn)很多其他庫的內(nèi)容(⊙_⊙)

mysqlpump備份過程(--single-transaction):

對于建立的第一個(gè)連接,執(zhí)行FLUSH TABLES WITH READ LOCK,加上只讀鎖;對于其他連接(包含第一個(gè)連接),設(shè)置RR隔離級別,并開啟一致性快照讀START TRANSACTION WITH CONSISTENT SNAPSHOT;當(dāng)所有連接(--default-parallelism設(shè)置多少個(gè)線程)都建立好后,再執(zhí)行解鎖UNLOCK TABLES;最后通過SELECT colname ?FROM `tbname`備份數(shù)據(jù)

general_log中沒有看到SHOW MASTER STATUS,猜測它類似于mydumper,也是在主線程FLUSH TABLES WITH READ LOCK后,就去獲取GTID信息。

因此mysqlpump也會遇到在mysqldump中的坑

mysqlpump并行備份的部分參數(shù)需要在單線程模式才能應(yīng)用,實(shí)際使用中建議先測試,對比輸出結(jié)果分辨各參數(shù)的作用

2.2、--single-transaction

? --single-transaction

This option sets the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. It is useful only with transactional tables such as InnoDB, because then it dumps the consistent state of the database at the time when START TRANSACTION was issued without blocking any applications.

When using this option, you should keep in mind that only InnoDB tables are dumped in a consistent state. For example, any MyISAM or MEMORY tables dumped while using this option may still change state.

While a --single-transaction dump is in process, to ensure a valid dump file (correct table contents and binary log coordinates), no other connection should use the following statements: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the SELECT that is performed by mysqldump/mysqlpump to retrieve the table contents to obtain incorrect contents or fail.

? START TRANSACTION

The WITH CONSISTENT SNAPSHOT modifier starts a consistent read for storage engines that are capable of it. This applies only to InnoDB. The effect is the same as issuing a START TRANSACTION followed by a SELECT from any InnoDB table.

The WITH CONSISTENT SNAPSHOT modifier does not change the current transaction isolation level, so it provides a consistent snapshot only if the current isolation level is one that permits a consistent read. The only isolation level that permits a consistent read is REPEATABLE READ.

該參數(shù)將事務(wù)隔離級別設(shè)置成Repeatable Read,并在dump之前發(fā)送start transaction語句給服務(wù)端。這只對事務(wù)表(比如innodb)很有用,因?yàn)樵诎l(fā)出start transaction時(shí),保證了在不阻塞任何應(yīng)用下的一致性狀態(tài)。對myisam和memory等非事務(wù)表,還是會改變狀態(tài)的,當(dāng)使用此參的時(shí)候要確保沒有其他連接在使用ALTER TABLE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE等語句,否則會出現(xiàn)不正確的內(nèi)容或者失敗。在mysql5.7.11之前,--default-parallelism大于1的時(shí)候和此參數(shù)互斥,必須使用--default-parallelism=0。5.7.11之后解決了--single-transaction和--default-parallelism的互斥問題

三、mydumper

3.1、備份過程

mydumper備份過程

1、連接目標(biāo)數(shù)據(jù)庫

2、通過show processlist來判斷是否有長查詢,根據(jù)參數(shù)long-query-guard和kill-long-queries決定退出或殺掉長查詢

3、主線程flush tables with read lock;start transaction with consistent snapshot

4、主線程讀取當(dāng)前時(shí)間點(diǎn)的二進(jìn)制日志文件名和日志寫入的位置并記錄在metadata文件中,以供即時(shí)點(diǎn)恢復(fù)使用

5、創(chuàng)建dump線程,缺省為4個(gè)

6、確定候選表,根據(jù)類別分別插入non_innodb_table、innodb_tables以及table_schemas鏈表

7、將候選表通過g_async_queue_push加入任務(wù)隊(duì)列(隊(duì)列最后元素是thread shutdown),由dump線程從隊(duì)列中讀取表信息并執(zhí)行數(shù)據(jù)導(dǎo)出

8、備份完non_innodb_table后立即unlock tables解鎖,以減少鎖定時(shí)間

9、等待dump InnoDB tables完成

從備份邏輯中可以看出,mydumper需要在備份完非事務(wù)表之后才解鎖,這就保證了事務(wù)表和非事務(wù)表的一致性備份。默認(rèn)情況下,DML操作不會影響mydumper備份的一致性

3.2、--trx-consistency-only

這個(gè)參數(shù)退化為僅保證事務(wù)表的一致性備份,在備份非事務(wù)表前如果有數(shù)據(jù)寫入就會導(dǎo)致數(shù)據(jù)與metadata不一致,有點(diǎn)類似前面的mysqldump、mysqlpump的味道

運(yùn)行前面的PythonDML腳本,一直往py_user_myisam、py_user_innodb表中寫入數(shù)據(jù),測試--trx-consistency-only選項(xiàng)的效果

# 清空general_log

[root@ZST1 logs]#cat /dev/null > /data/mysql/mysql3306/data/mysql-general.log

# 備份replcrash庫(僅事務(wù)表一致性備份)

[root@ZST1 mydumper]# mydumper-h 127.0.0.1 -P 3306 -u root -p mysql5719 --trx-consistency-only -v 3 -B replcrash -o /data/backup/mydumper** (mydumper:2808): WARNING **: Using trx_consistency_only, binlog coordinates will not be accurate ifyou are writing to non transactional tables.**Message: Connected to a MySQL server** Message: Started dump at: 2018-01-04 09:34:53

**Message: Written master status** Message: Thread 1 connected using MySQL connection ID 50

** Message: Thread 2 connected using MySQL connection ID 51

** Message: Thread 3 connected using MySQL connection ID 52

** Message: Thread 4 connected using MySQL connection ID 53

**Message: Transactions started, unlocking tables** Message: Thread 1 dumping data for`replcrash`.`py_user`** Message: Thread 2 dumping data for`replcrash`.`py_user_innodb`** Message: Thread 2 dumping data for`replcrash`.`py_user_myisam`** Message: Thread 1 dumping schema for`replcrash`.`py_user`** Message: Thread 3 dumping schema for`replcrash`.`py_user_innodb`** Message: Thread 1 dumping schema for`replcrash`.`py_user_myisam`** Message: Thread 3shutting down** Message: Thread 1shutting down** Message: Thread 2shutting down** Message: Thread 4shutting down** Message: Finished dump at: 2018-01-04 09:34:53# 查看metadata

[root@ZST1 mydumper]#catmetadata

Started dump at:2018-01-04 09:34:53SHOW MASTER STATUS:

Log: mysql-bin.000185Pos:2452139GTID:8ab82362-9c37-11e7-a858-000c29c1025c:1-272303Finished dump at:2018-01-04 09:34:53[root@ZST1 mydumper]#

# 還原replcrash庫

[root@ZST1 mydumper]# myloader-h 127.0.0.1 -P 3308 -u root -p mysql5719 -o -B replcrash -d /data/backup/mydumper

myloader不會產(chǎn)生binlog,也不會應(yīng)用metadata中的GTID

# 設(shè)置GTID_PURGED

mydba@192.168.85.132,3308 [replcrash]>reset master;

mydba@192.168.85.132,3308 [replcrash]> SET @@GLOBAL.GTID_PURGED=‘8ab82362-9c37-11e7-a858-000c29c1025c:1-272303‘;

# 搭建復(fù)制

mydba@192.168.85.132,3308 [replcrash]>change master to

master_host=‘192.168.85.132‘,

master_port=3306,

master_user=‘repl‘,

master_password=‘repl‘,

master_auto_position=1;

# 啟動(dòng)復(fù)制,查看復(fù)制狀態(tài)

mydba@192.168.85.132,3308 [replcrash]>start slave;

mydba@192.168.85.132,3308 [replcrash]>show slave status\G*************************** 1. row ***************************Master_Log_File: mysql-bin.000185Read_Master_Log_Pos:2758886Relay_Log_File: relay-bin.000002Relay_Log_Pos:414Relay_Master_Log_File: mysql-bin.000185Slave_IO_Running: Yes

Slave_SQL_Running: No

Exec_Master_Log_Pos:2452139Last_SQL_Errno:1062Last_SQL_Error: Could not execute Write_rows event on table replcrash.py_user_myisam; Duplicate entry‘783‘ for key ‘PRIMARY‘, Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event‘‘s master log mysql-bin.000185, end_log_pos 2452443Retrieved_Gtid_Set: 8ab82362-9c37-11e7-a858-000c29c1025c:272304-273161Executed_Gtid_Set: 8ab82362-9c37-11e7-a858-000c29c1025c:1-272303Auto_Position:1# 大于等于沖突key的數(shù)據(jù)

mydba@192.168.85.132,3308 [replcrash]> select * from replcrash.py_user_myisam where uid>=783;+-----+--------------------------------+---------------------+-----------+

| uid | name | add_time | server_id |

+-----+--------------------------------+---------------------+-----------+

| 783 | MLGU22VB26RHNNYAY6IPPUJX9A74EM | 2018-01-04 09:34:53 | 1323306 |

+-----+--------------------------------+---------------------+-----------+

1 row in set (0.06sec)

# mydumper產(chǎn)生的general-log

[root@ZST1 data]# vim/data/mysql/mysql3306/data/mysql-general.log

...2018-01-04T01:34:53.769877Z 49 Query SET SESSION net_write_timeout = 2147483

2018-01-04T01:34:53.770302Z 49Query SHOW PROCESSLIST2018-01-04T01:34:53.770886Z 49Query FLUSH TABLES WITH READ LOCK2018-01-04T01:34:53.771236Z 49 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT*/

2018-01-04T01:34:53.771430Z 49 Query /*!40101 SET NAMES binary*/

2018-01-04T01:34:53.772084Z 49Query SHOW MASTER STATUS2018-01-04T01:34:53.772331Z 49Query SHOW SLAVE STATUS2018-01-04T01:34:53.773386Z 48 Query insert into py_user_myisam(name,add_time,server_id) values(‘MLGU22VB26RHNNYAY6IPPUJX9A74EM‘,now(),@@server_id)2018-01-04T01:34:53.773981Z 50 Connect root@localhost on using TCP/IP2018-01-04T01:34:53.788273Z 50 Query SET SESSION wait_timeout = 2147483

2018-01-04T01:34:53.788874Z 50Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ2018-01-04T01:34:53.788972Z 50 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT*/

2018-01-04T01:34:53.789092Z 50 Query /*!40103 SET TIME_ZONE=‘+00:00‘*/

2018-01-04T01:34:53.789201Z 50 Query /*!40101 SET NAMES binary*/

2018-01-04T01:34:53.790091Z 51 Connect root@localhost on using TCP/IP2018-01-04T01:34:53.790315Z 51 Query SET SESSION wait_timeout = 2147483

2018-01-04T01:34:53.791912Z 51Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ2018-01-04T01:34:53.792095Z 51 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT*/

2018-01-04T01:34:53.792307Z 51 Query /*!40103 SET TIME_ZONE=‘+00:00‘*/

2018-01-04T01:34:53.792418Z 51 Query /*!40101 SET NAMES binary*/

2018-01-04T01:34:53.793381Z 52 Connect root@localhost on using TCP/IP2018-01-04T01:34:53.794631Z 52 Query SET SESSION wait_timeout = 2147483

2018-01-04T01:34:53.796301Z 52Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ2018-01-04T01:34:53.796404Z 52 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT*/

2018-01-04T01:34:53.796538Z 52 Query /*!40103 SET TIME_ZONE=‘+00:00‘*/

2018-01-04T01:34:53.796641Z 52 Query /*!40101 SET NAMES binary*/

2018-01-04T01:34:53.797414Z 53 Connect root@localhost on using TCP/IP2018-01-04T01:34:53.798420Z 53 Query SET SESSION wait_timeout = 2147483

2018-01-04T01:34:53.799316Z 53Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ2018-01-04T01:34:53.799425Z 53 Query START TRANSACTION /*!40108 WITH CONSISTENT SNAPSHOT*/

2018-01-04T01:34:53.800345Z 53 Query /*!40103 SET TIME_ZONE=‘+00:00‘*/

2018-01-04T01:34:53.800449Z 53 Query /*!40101 SET NAMES binary*/

2018-01-04T01:34:53.800661Z 49 Query UNLOCK TABLES /*trx-only*/

2018-01-04T01:34:53.801868Z 49Init DB replcrash2018-01-04T01:34:53.802332Z 49Query SHOW TABLE STATUS2018-01-04T01:34:53.804759Z 50 Query SELECT /*!40001 SQL_NO_CACHE*/ *FROM `replcrash`.`py_user`2018-01-04T01:34:53.805137Z 51 Query SELECT /*!40001 SQL_NO_CACHE*/ *FROM `replcrash`.`py_user_innodb`2018-01-04T01:34:53.807164Z 51 Query SELECT /*!40001 SQL_NO_CACHE*/ *FROM `replcrash`.`py_user_myisam`2018-01-04T01:34:53.808786Z 48 Query insert into py_user_innodb(name,add_time,server_id) values(‘MLGU22VB26RHNNYAY6IPPUJX9A74EM‘,now(),@@server_id)2018-01-04T01:34:53.809449Z 49Query SHOW CREATE DATABASE `replcrash`2018-01-04T01:34:53.810326Z 52Query SHOW CREATE TABLE `replcrash`.`py_user_innodb`2018-01-04T01:34:53.810638Z 50Query SHOW CREATE TABLE `replcrash`.`py_user`2018-01-04T01:34:53.811307Z 52Quit2018-01-04T01:34:53.811506Z 50Query SHOW CREATE TABLE `replcrash`.`py_user_myisam`2018-01-04T01:34:53.812272Z 50Quit2018-01-04T01:34:53.812512Z 48 Query commit

View Code

48是python持續(xù)寫入的線程、49是主線程、50~53是dump線程

所有連接建立后,主線程立即解鎖UNLOCK TABLES /* trx-only */。主線程SHOW MASTER STATUS的后面緊接著python寫入nsert into py_user_myisam,實(shí)際這個(gè)寫入操作應(yīng)該是在主線程UNLOCK TABLES之后,dump線程備份py_user_myisam數(shù)據(jù)之前。這就導(dǎo)致備份的數(shù)據(jù)與metadata不一致,因此不推薦使用--trx-consistency-only選項(xiàng)

3.3、邏輯備份差異

mysqldump:只支持單線程工作,這就使得它無法迅速的備份數(shù)據(jù)

mysqlpump:并行的最小粒度是單個(gè)數(shù)據(jù)庫對象,對于每張表的導(dǎo)出只能是單個(gè)線程的

mydumper:支持對單表多個(gè)線程備份,參數(shù)-r

多線程操作提升空間受限于磁盤的IO能力,在使用前做好磁盤IO的評估

四、XtraBackup

4.1、備份過程

innobackupex全備過程

1、start xtrabackup_log

2、copy .ibd、ibdata1

3、FLUSH TABLES WITH READ LOCK

4、copy .frm、.MYD、.MYI、misc files

5、SHOW MASTER STATUS

6、UNLOCK TABLES

7、stop and copy xtrabackup_log

備份開始時(shí)首先會開啟一個(gè)后臺檢測進(jìn)程,從當(dāng)前checkpoint位置開始拷貝redo log,同時(shí)持續(xù)檢測redo log,一旦發(fā)現(xiàn)redo中有新的日志寫入,立刻將日志記入后臺日志文件xtrabackup_log中。之后拷貝innodb的數(shù)據(jù)文件和系統(tǒng)表空間文件ibdata1,待拷貝結(jié)束后,執(zhí)行flush tables with read lock操作,拷貝.frm,MYI,MYD,等文件,并且在這一時(shí)刻獲得binlog的位置,最后會發(fā)出unlock tables,把表設(shè)置為可讀可寫狀態(tài),最終停止xtrabackup_log。

InnoDB表copy [.ibd、ibdata]+[redo log]借助InnoDB Crash Recovery機(jī)制保證一致性;non-InnoDB表使用FTWRL加只讀鎖后backup non-InnoDB tables and files。DML操作不會影響innobackupex備份的一致性

4.2、總結(jié)

mysqldump

mysqlpump

mydumper

innobackupex

FTWRL被阻塞

存在互斥鎖,會被阻塞

存在互斥鎖,會被阻塞

存在互斥鎖,會被阻塞

存在互斥鎖,會被阻塞

報(bào)錯(cuò),表定義變更

報(bào)錯(cuò),表定義變更

不報(bào)錯(cuò),-v 3查看

報(bào)錯(cuò),DDL操作沒寫redo log

DML操作影響數(shù)據(jù)一致性

non_InnoDB表不一致

non_InnoDB表不一致

默認(rèn)一致,--trx-consistency-only會導(dǎo)致不一致

一致

其他

沒有指定my.cnf導(dǎo)致備份一個(gè)錯(cuò)誤的實(shí)例

對生產(chǎn)庫的DDL操作、大事務(wù)、或者長時(shí)間鎖表的操作,一定要避開備份時(shí)間(?ω?)

五、參考文檔

總結(jié)

以上是生活随笔為你收集整理的backupexec mysql_MySQL备份可能遇到的坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久久久久久久久久网 | 成人中文字幕+乱码+中文字幕 | 免费精品视频在线观看 | 中文字幕不卡在线88 | 91在线看黄| 91热在线 | 超碰av在线 | 国内精品久久久久影院一蜜桃 | 激情综合六月 | 午夜丁香视频在线观看 | 日本午夜在线观看 | 五月婷婷狠狠 | 综合色中色 | 免费91麻豆精品国产自产在线观看 | 国产96在线观看 | 日韩精品一区二区三区第95 | 在线观看www91 | 国产中文字幕一区 | 久久精品3 | 天天看天天操 | 国产精品第十页 | 久久成熟 | 亚洲 欧美 国产 va在线影院 | 亚洲va欧美va人人爽 | 免费在线观看污 | www.久久视频 | 成人国产精品久久久春色 | 一区二区视频在线播放 | 人人草网站 | 免费污片 | 天天色天天综合网 | 国产在线精品一区二区不卡了 | 日韩美女久久 | 很黄很污的视频网站 | 色黄www小说 | 免费看成人 | 中文字幕一区二区三区在线视频 | 中字幕视频在线永久在线观看免费 | 夜夜高潮夜夜爽国产伦精品 | 国产在线探花 | 亚洲精品一区二区三区高潮 | 在线视频 国产 日韩 | 久久污视频 | 精品伊人久久久 | 波多野结衣精品视频 | 免费一级片视频 | 天天操偷偷干 | 久久精品久久久久电影 | 久久综合给合久久狠狠色 | 深爱激情五月婷婷 | 四虎天堂| 91精品视频播放 | 成人在线视频免费 | 日韩av电影国产 | 日韩免费观看高清 | 久久精品一区二区三 | 青青草国产精品视频 | 天堂激情网 | 亚洲婷婷在线视频 | 亚洲性少妇性猛交wwww乱大交 | 国产伦理一区二区三区 | 久久资源在线 | 探花系列在线 | 中文字幕第一 | 精品一区中文字幕 | 正在播放五月婷婷狠狠干 | 亚洲精品国产麻豆 | 国产黄色大片 | 欧美中文字幕久久 | 成年人av在线播放 | 国产看片免费 | 国产精品123| 综合久久精品 | 亚洲激情在线 | 日韩午夜电影院 | 国产一级三级 | www.天天操.com | 欧美色图一区 | 精品国产黄色片 | 一区二区伦理电影 | 亚洲一区二区麻豆 | 亚洲成人精品久久久 | 黄网站色成年免费观看 | 国产小视频你懂的在线 | 国产在线免费观看 | 国产成人福利在线 | 人人干人人做 | 天天人人 | 99视频免费| 欧美视屏一区二区 | a'aaa级片在线观看 | 中文av影院 | 亚洲国产av精品毛片鲁大师 | 天天射天天色天天干 | 中文字幕av一区二区三区四区 | 欧美a视频在线观看 | 国产成人精品久久久久蜜臀 | 99免费精品 | 国产原创av片 | 精品久久五月天 | 99久e精品热线免费 99国产精品久久久久久久久久 | 日韩a在线观看 | 青青草在久久免费久久免费 | 国产一区二区播放 | 99久热| 国产高清在线免费观看 | 久久国产精品99国产 | a久久久久 | 精品国产免费人成在线观看 | 精品国产1区二区 | 草久视频在线 | 国产视频 亚洲精品 | 久青草视频在线观看 | 人人爽人人射 | 91av超碰| 天天天干天天射天天天操 | 在线观看色网 | av+在线播放在线播放 | 色婷婷骚婷婷 | 成人午夜免费福利 | 国产97在线看 | 黄在线免费看 | 麻豆视频观看 | 国产三级视频在线 | 国产精品欧美 | 99视频偷窥在线精品国自产拍 | 在线观看视频中文字幕 | 午夜av免费看 | 色偷偷男人的天堂av | av成人免费| 久久天天躁狠狠躁亚洲综合公司 | 免费av观看网站 | 9在线观看免费高清完整版在线观看明 | 中文字幕在线播放日韩 | 亚洲精品视频在线观看免费视频 | 国产精品午夜免费福利视频 | 久久久免费精品 | 成人网看片 | 亚洲综合少妇 | 国产福利精品一区二区 | 国产成人免费av电影 | 色资源网免费观看视频 | 欧美另类人妖 | 欧美三级免费 | 成人精品一区二区三区中文字幕 | 中文伊人 | 亚洲日本韩国一区二区 | 国产精品18久久久久久久久久久久 | 国产精品露脸在线 | 九色91av| 成人午夜电影网 | 日韩激情网| www.婷婷色| 国产精品va | 久久香蕉影视 | 国产精品一区二区三区免费看 | 欧美一级电影 | 伊人导航 | 久久精品久久99精品久久 | 久热av | 精品国产综合区久久久久久 | 日韩在线一二三区 | 中文字幕一区2区3区 | 国产精品久久久久久一区二区三区 | av在线播放网址 | 中文字幕亚洲国产 | 视频在线观看一区 | 天天操天天操天天操 | 久草在线久草在线2 | avlulu久久精品 | 日韩欧美一级二级 | 日韩av电影免费观看 | 欧美热久久 | 天天射天天干 | 精品福利在线观看 | 日韩3区| 成人av免费看 | 91xav| 中文字幕网站 | 亚洲.www | 久久国产精品视频免费看 | 在线观看视频国产一区 | 欧美日韩国产一二 | 国产在线观看一区 | 黄色三级网站 | 日韩欧美视频一区 | 人人网av | 天天插天天干天天操 | 伊人资源站| 黄色精品在线看 | 91在线播 | 四虎在线免费视频 | 在线观看国产 | 天天色成人 | 亚洲电影久久久 | 免费毛片一区二区三区久久久 | 欧美久久久久久久久久久久久 | 99re8这里有精品热视频免费 | 国产精品久久久精品 | 欧美色精品天天在线观看视频 | 91视频在线观看大全 | 日韩a在线观看 | 成 人 黄 色 视频播放1 | 国产精品国产亚洲精品看不卡 | 国内精品久久久久影院一蜜桃 | 精品欧美乱码久久久久久 | 国产综合精品一区二区三区 | 免费男女网站 | 在线观看的黄色 | 国产无套视频 | 免费观看一区二区三区视频 | 免费在线激情电影 | www.亚洲精品视频 | 午夜精品视频免费在线观看 | 毛片永久免费 | 亚洲天堂网在线播放 | 精品在线观看一区二区三区 | 欧美精品久久久久久久久久白贞 | av综合在线观看 | 国产精品乱码久久久 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产精品久久久久久欧美 | 视频直播国产精品 | 国产精品一区二区三区在线免费观看 | 国产成人在线播放 | 91在线欧美| 人人射人人插 | 国产成人精品aaa | 色综合天天天天做夜夜夜夜做 | 国产看片免费 | 18国产精品福利片久久婷 | 激情喷水| 亚洲成人网av | 日韩精品免费一区二区在线观看 | 欧美精品久久久久久久亚洲调教 | 日韩视频在线观看视频 | 国产亚洲精品久久久久久久久久 | 91中文视频| 国产高清永久免费 | 99精品偷拍视频一区二区三区 | 一区二区三区视频在线 | 免费a级毛片在线看 | 国产精品观看在线亚洲人成网 | 国产原厂视频在线观看 | 国产综合在线观看视频 | 精品视频在线播放 | 五月花激情 | 国产精品成人一区二区三区吃奶 | 亚洲高清网站 | 超碰97av在线 | 亚洲一区二区三区精品在线观看 | 爱爱av网站 | 国产精品欧美久久久久久 | 国产一区免费视频 | 在线观看免费91 | 午夜精品一区二区三区在线视频 | 久久91网| 日日躁夜夜躁xxxxaaaa | 香蕉视频网站在线观看 | a电影在线观看 | 在线观看久久 | av夜夜操| 国产精品成久久久久三级 | 手机在线看a | 免费观看视频的网站 | 婷婷av资源| 国产中年夫妇高潮精品视频 | 欧美精品国产综合久久 | 国产真实在线 | 男女免费视频观看 | 日日日爽爽爽 | 国产一区二区网址 | 2021av在线| 韩国在线视频一区 | 国产在线视频在线观看 | 91成人欧美 | 亚洲国产中文在线观看 | 亚洲婷婷丁香 | 国产精品一区二区av日韩在线 | 九九免费在线观看 | 激情开心网站 | 三级av在线免费观看 | 中文字幕在线一二 | 91爱爱视频 | 在线免费91 | 99久久精品免费看国产一区二区三区 | 日本最新中文字幕 | 欧美日韩性视频在线 | 色狠狠婷婷 | 久久精品99国产国产精 | 看全黄大色黄大片 | av+在线播放在线播放 | 欧美一区二视频在线免费观看 | 91插插影库 | 婷婷久久一区 | 亚洲精品99久久久久久 | 久操视频在线免费看 | 在线最新av | 狠狠夜夜 | 91av免费在线观看 | 久久久久久久影视 | 日本在线免费看 | 亚洲视频,欧洲视频 | 色综合天天综合网国产成人网 | 337p日本大胆噜噜噜噜 | 中文电影网 | aⅴ视频在线 | 999视频在线观看 | 色综合亚洲精品激情狠狠 | 一区二区精品国产 | 久久成人国产精品入口 | av免费看看| 久久久久高清 | 91黄在线看 | 911久久香蕉国产线看观看 | 天天干天天综合 | 天天干天天上 | 久久五月婷婷丁香 | 国产伦精品一区二区三区… | 成人精品影视 | 欧美成人久久 | 国产视频在线免费观看 | 欧美激情综合色综合啪啪五月 | 又黄又爽又湿又无遮挡的在线视频 | 91九色视频国产 | 三级黄在线 | 人人插人人爱 | 又黄又刺激 | 黄色影院在线免费观看 | 狠狠做深爱婷婷综合一区 | 色婷婷国产在线 | 在线成人中文字幕 | 久久撸在线视频 | 亚洲天堂毛片 | 日韩精品欧美专区 | 狠狠干婷婷 | 月下香电影| 日日操网站 | 97在线观看免费观看高清 | www.狠狠操.com | 欧美精品久久久久久久久免 | 探花视频免费观看高清视频 | 欧美日韩中文字幕综合视频 | wwwwwww黄| 欧美日韩午夜 | 日韩免费福利 | 日韩精品一区二区久久 | 亚洲精品视频久久 | 亚洲精品视频久久 | 国产高清视频在线观看 | 日韩高清免费在线 | 最新午夜电影 | 超碰免费观看 | av 一区 二区 久久 | 欧美韩日在线 | av网址aaa| 亚洲精品人人 | 69av免费视频| 免费在线电影网址大全 | 国产剧情一区二区在线观看 | 欧美激情精品久久久久久变态 | 亚洲香蕉视频 | 天天色天天操天天爽 | 麻豆国产精品va在线观看不卡 | 国产成人久久av免费高清密臂 | 国产一区在线免费观看 | 狠狠狠狠狠色综合 | 日韩国产欧美在线视频 | 99久久久久久久久 | 天天天干夜夜夜操 | 韩日精品在线观看 | 国产视频1 | 国产最新视频在线观看 | 天天射射天天 | 久久国产片 | 国产日韩一区在线 | 国产日韩一区在线 | 婷香五月 | 精品亚洲成a人在线观看 | 欧美午夜性生活 | 99久久99久久精品国产片果冰 | 久久99精品久久久久婷婷 | 国产精品18久久久久久首页狼 | 精品视频在线观看 | 99国内精品久久久久久久 | 婷婷日 | 国产 在线 高清 精品 | 欧美在线99 | 西西44人体做爰大胆视频 | 亚洲国产偷 | 日日夜夜天天干 | 天堂av在线免费观看 | 国产成人91 | 99热99| 欧美午夜寂寞影院 | 国产高清视频免费最新在线 | 成人91免费视频 | 免费看污污视频的网站 | 激情五月在线视频 | 日韩中文字幕免费电影 | 狠狠的干狠狠的操 | 不卡视频一区二区三区 | 成人黄色电影在线观看 | 日本高清免费中文字幕 | 91精品国产自产91精品 | jizzjizzjizz亚洲 | 天天曰 | 亚洲资源在线网 | 午夜的福利| 日本资源中文字幕在线 | 久久综合在线 | 亚洲精品在线免费播放 | 久久国产影视 | 超碰免费观看 | 日韩av一区二区在线影视 | 婷婷福利影院 | 国产在线观看高清视频 | 国产精品麻豆果冻传媒在线播放 | 久久久久久久久久久久久久免费看 | 婷婷开心久久网 | 在线视频日韩一区 | 久久久久国产一区二区三区四区 | 高清av中文在线字幕观看1 | 国产成视频在线观看 | 日本女人逼 | 丁香五婷 | 国产成人高清在线 | 中文字幕精品一区 | 日韩亚洲欧美中文字幕 | 五月天狠狠操 | 国产精品2018 | 日韩一区二区三区在线观看 | 极品久久久久久久 | 91亚洲精品久久久中文字幕 | av最新资源| 婷婷综合视频 | av线上免费看 | 久久免费福利 | 久久 一区 | 久久毛片视频 | 在线播放第一页 | 久久久午夜视频 | 国产成人久久av977小说 | 玖玖综合网 | 日韩中文字幕第一页 | 国产精品久久久久久久久费观看 | av网站免费在线 | 欧美在线1 | 久久综合偷偷噜噜噜色 | 91视频免费网站 | 超碰在线个人 | 黄色h在线观看 | www.成人久久 | 在线视频精品播放 | 亚洲精品66 | 国产精品久久久久久久久久了 | 欧美巨大荫蒂茸毛毛人妖 | 免费看污在线观看 | 久久久精品国产免费观看同学 | 二区三区视频 | 91亚洲国产成人久久精品网站 | 久久精品国产精品亚洲精品 | 久久国产精品免费观看 | 日韩亚洲国产精品 | 精品国产乱码一区二 | www成人av| 在线中文字幕一区二区 | 粉嫩av一区二区三区四区五区 | 天天操夜夜操夜夜操 | 精品国产一区二区三区久久影院 | 精品国产一区二区三区久久久蜜月 | 成人免费观看网址 | 激情综合网五月婷婷 | 一区二区三区在线免费观看 | 97在线看片| 国产精品日韩欧美 | 狠狠色噜噜狠狠狠狠2021天天 | 日本精品视频在线播放 | 日韩精品中文字幕久久臀 | 久久久久成 | 久草热久草视频 | 欧美专区亚洲专区 | 欧美激情视频在线观看免费 | 久久区二区 | 国产黄色在线观看 | 久草在线99 | 婷婷色网视频在线播放 | 麻豆视频国产 | 久久99精品久久久久婷婷 | 国产精品第 | 日韩欧美一区二区三区视频 | 亚洲深爱激情 | 国产精品1区2区在线观看 | 在线免费av网 | 久艹视频免费观看 | www.69xx| 亚洲国产成人精品在线 | 久久激情日本aⅴ | 日韩a级免费视频 | 日韩亚洲在线 | 激情黄色av | 久草精品视频在线观看 | 日日夜夜精品视频天天综合网 | a级国产乱理论片在线观看 特级毛片在线观看 | а天堂中文最新一区二区三区 | 久久视频精品 | www.久久久久 | 精品国产乱码久久久久久三级人 | 91电影福利| 免费合欢视频成人app | 久久夜色精品国产欧美乱 | 97在线视频观看 | 久久午夜电影网 | 操操综合 | 91av手机在线 | 精品国产美女在线 | 国产又粗又猛又爽又黄的视频先 | 黄色成人91 | 天天操天天干天天综合网 | 日韩视频三区 | 亚洲一区日韩精品 | 日韩免费在线观看网站 | 日韩精品免费一区二区 | 丝袜制服综合网 | 91热这里只有精品 | 色婷婷电影网 | 在线看v片成人 | 麻豆精品视频在线观看免费 | 精品国产一区二区在线 | 亚洲观看黄色网 | 久草在线视频在线观看 | 国产午夜精品免费一区二区三区视频 | 69久久久 | 久久狠狠一本精品综合网 | 人人爽人人射 | 日韩精品短视频 | 亚洲精品国偷拍自产在线观看 | 成人久久18免费 | 日本久久久久久 | 91麻豆精品91久久久久同性 | 国产精品永久久久久久久久久 | 99热手机在线 | 国产精品久久久久久一区二区 | 夜色成人网 | 国产精品久久久久久久久久久久冷 | 亚洲综合最新在线 | 亚洲老妇xxxxxx | 亚洲精品色婷婷 | 一区二区三区在线视频观看58 | 日日操操操 | 97精产国品一二三产区在线 | 黄色精品在线看 | 视频在线观看亚洲 | 日韩免费在线观看网站 | 亚洲国产三级在线观看 | a级黄色片视频 | 欧美日韩裸体免费视频 | 久久天天躁狠狠躁亚洲综合公司 | 国产三级在线播放 | 丁香在线 | 婷婷视频导航 | 91精品久久久久久久99蜜桃 | 91丨九色丨勾搭 | 国内精品久久久久影院优 | 日韩com| 在线免费看片 | 成人午夜影院在线观看 | 天天激情在线 | 国产97av| 在线精品视频免费观看 | 免费观看www7722午夜电影 | 久久免费视频在线 | 91av99| 九九在线高清精品视频 | 四虎国产精品成人免费影视 | 探花视频在线观看+在线播放 | 国产黄色看片 | 欧美淫aaa免费观看 日韩激情免费视频 | 亚洲精品免费观看 | 婷婷久久国产 | 欧美91在线| 国产最新在线观看 | 久久综合九色综合97婷婷女人 | 人人爽人人爽人人爽人人爽 | 日韩中文字幕视频在线观看 | 日韩电影在线观看一区二区三区 | 国产视频手机在线 | 国产精品久久久久999 | 欧美日韩免费网站 | 久草免费福利在线观看 | 成人羞羞免费 | 国产视频美女 | 热久久影视 | 狠狠久久 | 精品主播网红福利资源观看 | 亚洲欧美日韩一级 | 91精品国产自产在线观看永久 | 国产精品96久久久久久吹潮 | 国产精品九九久久99视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 99热最新网址 | 欧美日韩免费视频 | av免费线看| 久久草草热国产精品直播 | 在线免费观看的av | 免费黄色a网站 | 最新精品视频在线 | 久久狠狠干 | 国产精彩在线视频 | 中文字字幕在线 | 免费视频久久 | 国产精品乱码在线 | 久草视频观看 | 国产免费小视频 | 色视频网站在线观看一=区 a视频免费在线观看 | 欧美疯狂性受xxxxx另类 | 久久国产精品免费一区二区三区 | 毛片随便看 | 国产一区在线免费观看视频 | 成人黄色免费在线观看 | 久久久九色精品国产一区二区三区 | 中文字幕国内精品 | 天天插日日操 | 992tv成人免费看片 | 日韩免费高清在线观看 | 久久久片 | v片在线播放 | 午夜精品久久久久久 | 夜夜操网 | 欧美久久成人 | 国产精品久久久久一区二区 | 四川妇女搡bbbb搡bbbb搡 | 91在线免费视频 | 国产在线a不卡 | 韩国av三级 | 免费在线观看日韩 | 中文不卡视频 | 一级一片免费看 | 欧美精品免费在线 | 精品一区二区三区久久久 | 97精产国品一二三产区在线 | 天天草天天草 | 伊人久久电影网 | 欧美激情h| 四虎5151久久欧美毛片 | 免费看片网页 | 国产精品一区二区免费在线观看 | 一区二区电影在线观看 | 五月天最新网址 | 国产美腿白丝袜足在线av | 欧美一区二区精品在线 | 91经典在线| 精品国产一区二区三区蜜臀 | 成人黄色小视频 | 五月在线| 色婷婷久久久综合中文字幕 | 久久精品一区二 | www.久久久 | 亚洲精品电影在线 | 国产中文字幕大全 | 国产美女主播精品一区二区三区 | av电影不卡在线 | 亚洲手机av | 96精品高清视频在线观看软件特色 | 五月天高清欧美mv | 午夜视频免费在线观看 | 狠狠色综合网站久久久久久久 | 丁香六月欧美 | 可以免费观看的av片 | 日韩mv欧美mv国产精品 | 九九热在线视频免费观看 | 免费观看一级特黄欧美大片 | 久久99久久99免费视频 | 免费看色网站 | 97超碰人人澡 | 亚洲欧美国产日韩在线观看 | 国内少妇自拍视频一区 | 久久伊人八月婷婷综合激情 | av一本久道久久波多野结衣 | 国产在线色站 | 日日爱影视 | 久久不卡免费视频 | 亚洲国产大片 | 美女激情影院 | 国产黄色在线网站 | 国产一区欧美一区 | 久久综合欧美精品亚洲一区 | 欧美午夜性生活 | 精品久久精品久久 | 欧美经典久久 | 亚洲午夜久久久久 | 米奇狠狠狠888 | 日韩中文字幕在线 | 婷婷免费在线视频 | 日本三级人妇 | 久久这里只有精品视频首页 | 国产色影院 | 欧美久久久久久久久中文字幕 | 国产在线观看污片 | 免费色网站| 亚洲精品ww| 久久久91精品国产一区二区三区 | 日韩女同av | 久久精品网| 久久超碰免费 | 在线影院中文字幕 | 国产亚洲精品女人久久久久久 | 日日操夜夜操狠狠操 | 色综合婷婷久久 | 久久免费大片 | 国产黄色大片免费看 | 久久精品xxx | 一区二区三区在线观看免费视频 | 国产一级二级在线 | 国产免费一区二区三区最新6 | 国产一区二区高清视频 | 香蕉视频4aa| 久草视频在线新免费 | 国产精品99久久久久的智能播放 | 亚洲一区二区麻豆 | 成年性视频 | 欧美天天干 | 国产在线欧美日韩 | 久久av中文字幕片 | 国产精品高清在线 | 久久久在线免费观看 | 91传媒在线观看 | 亚洲视频www | 狠狠干天天色 | 欧美国产91| 视频在线99| 日本久草电影 | av黄免费看 | 亚洲欧洲精品一区二区精品久久久 | 狠狠躁夜夜a产精品视频 | 97国产视频 | 黄色福利视频网站 | aaa日本高清在线播放免费观看 | 四虎成人免费观看 | 久久久久国产成人精品亚洲午夜 | 久久久免费观看完整版 | 免费av片在线 | 国产一级做a爱片久久毛片a | 色婷婷一| 免费国产一区二区视频 | 国产高清日韩 | 五月导航 | 国产伦理久久精品久久久久_ | 中文字幕在线免费97 | 久久久午夜视频 | 免费a v在线 | 亚洲资源在线网 | 国产精品久久久久久久电影 | 欧美精品一区在线 | 精品一区二区三区香蕉蜜桃 | 奇米网777| 久久精品亚洲一区二区三区观看模式 | 亚洲精品资源在线观看 | 91视频 - 114av | 日韩激情综合 | 五月婷婷开心中文字幕 | 99久久一区 | 午夜精品导航 | 久久久午夜电影 | 久久久久免费精品国产 | 国产精品情侣视频 | 国产99久久久精品 | 日韩在线观看 | 免费特级黄毛片 | 久亚洲| av大全免费在线观看 | 久久视频这里有久久精品视频11 | 91天堂素人约啪 | 国产精品第一页在线观看 | 97在线视频网站 | 免费h精品视频在线播放 | av黄色成人 | 久久激情视频 久久 | www.久久99 | 久久久免费精品国产一区二区 | 日韩久久网站 | 色国产精品一区在线观看 | 国产区网址 | 99视频免费在线观看 | 日本在线观看一区二区三区 | 亚洲一二三久久 | 亚洲精品免费观看视频 | 一级片黄色片网站 | 天天操天 | 欧美韩国在线 | 三级黄色在线 | 国产最新在线 | 国产一区网址 | 99精品国产免费久久久久久下载 | 久久久亚洲麻豆日韩精品一区三区 | 69国产成人综合久久精品欧美 | 99视频免费 | 亚洲视频h | 久久久99国产精品免费 | www.狠狠操.com| 91成人黄色| 午夜12点 | 日韩艹 | 日本在线视频网址 | 久久精品视频18 | 成人久久网 | 91视频在线免费下载 | 一区二区视频免费在线观看 | 精品一区二区在线免费观看 | 99精品一区二区 | 欧美成年人在线观看 | 色99在线 | 久久久综合色 | 久久久久亚洲国产精品 | 亚洲黄色免费观看 | 久久99久久99精品 | 天天色视频 | 久久久国产精品一区二区三区 | 久久久亚洲麻豆日韩精品一区三区 | 精品国产视频在线观看 | 一区二区视频在线免费观看 | 99性视频| 欧美成人h版在线观看 | 久久免费视频8 | 久久精视频| 国产精品一级视频 | 伊人狠狠干 | 四虎视频| 视频在线亚洲 | 亚洲成人av片在线观看 | 久久综合久久综合这里只有精品 | 久久精品1区 | 伊人伊成久久人综合网站 | 五月天视频网站 | 91精品国 | 国产九九热 | av成人在线播放 | 香蕉视频一级 | 日韩a在线播放 | 免费观看国产精品视频 | 成人午夜影院在线观看 | 性色va| www久久国产 | 国产色拍拍拍拍在线精品 | 亚洲日本va中文字幕 | 超碰在线最新网址 | 免费日韩 | 狠狠色伊人亚洲综合成人 | 蜜臀av夜夜澡人人爽人人桃色 | 狠狠干狠狠操 | 国产成人av一区二区三区在线观看 | 色www精品视频在线观看 | www黄免费| a黄色大片 | 亚洲欧美成人在线 | 欧美久久久久久久久久久久 | 国产精品久久久久久久久久尿 | 免费男女羞羞的视频网站中文字幕 | 国产精品综合av一区二区国产馆 | 日韩国产欧美在线播放 | 奇米网在线观看 | 在线成人一区 | 麻豆国产网站入口 | 六月色 | 99热国产在线 | 亚洲精品国产成人av在线 | 日韩欧美精品一区二区三区经典 | 国产在线97 | 2023国产精品自产拍在线观看 | 久久国产精品第一页 | 麻豆久久 | 九九久久久久99精品 | 久久人人97超碰com | www.亚洲| 国产精品久久久久高潮 | 亚洲欧美视频一区二区三区 | 黄色大全在线观看 | 国产丝袜一区二区三区 | 精品国产免费看 | 亚洲一区二区视频在线 | 99 久久久久 | 亚洲日本欧美在线 | 1024久久| 久久精品亚洲一区二区三区观看模式 | 中文字幕在线观看1 | 中文字幕精品一区二区精品 | 91精品国产91久久久久福利 | 成人免费xyz网站 | 91九色视频在线观看 | 少妇bbbb搡bbbb搡bbbb | 精品久久一 | 精品国产精品国产偷麻豆 | 久久网站最新地址 | 欧美精品中文在线免费观看 | www免费视频com | 欧美日韩高清 | 天堂久久电影网 | 黄色资源在线观看 | av在线等 | 亚洲精品天天 | 美女网站视频一区 | 久久久久久久久影视 | 欧美性大胆 | 性色av免费在线观看 | 久久综合久色欧美综合狠狠 | 999在线视频 | 美女网站视频免费都是黄 | 蜜臀av性久久久久蜜臀av | 九九在线精品视频 | 亚洲黄色一级大片 | 日本精油按摩3 | 美女黄久久 | 欧美日韩一区二区三区在线观看视频 | 亚洲高清视频在线播放 | 午夜精品一区二区三区免费 | 在线看国产| 精品一二三区 | 中文字幕在线专区 | 成人国产精品久久久久久亚洲 | 久久精品79国产精品 | av电影av在线 | 日韩在线资源 | 日韩免费在线视频观看 | 国产福利一区二区三区在线观看 | 欧美日韩午夜在线 | 欧美日韩国产一二三区 | av黄在线播放 | 超碰在线日本 | 日韩大片在线播放 | 九九视频免费观看视频精品 | 日韩女同av | 九九九热 | 中文字幕日韩精品有码视频 | 国产又粗又猛又爽又黄的视频免费 | 91丨九色丨高潮丰满 | 中文字幕在线一区二区三区 | 国外成人在线视频网站 | 黄色成人免费电影 | av免费看av | 99久久精品免费看国产四区 | 久久综合九色综合欧美狠狠 | 在线天堂中文在线资源网 | 日韩美女一级片 | 国产视频亚洲精品 | 欧美日韩在线视频一区 | 69国产在线观看 | 成人免费 在线播放 | 国产一区二区在线免费播放 | 99久久精品一区二区成人 | 91一区一区三区 | 日韩欧美精品在线 | 玖玖国产精品视频 | 亚洲在线黄色 | 欧美极品少妇xxxx | 国产成人久久 | 天天爽天天碰狠狠添 | 在线播放日韩av | 久久r精品| 五月婷婷激情 | 亚洲精品国产综合久久 | 国产色视频一区二区三区qq号 | 久久狠狠婷婷 | 在线观看91av | 中文字幕色在线视频 | 少妇bbb好爽 | 久久亚洲福利视频 | 在线黄色毛片 | 日韩欧美一区二区三区视频 | 日本精品久久久久影院 | 人人插人人爱 | 日韩精品一区二区三区三炮视频 | 天天操天天干天天 | 狠狠干夜夜爱 | 国产综合香蕉五月婷在线 | 国产精品免费一区二区三区在线观看 | 国产精品午夜免费福利视频 | 国产麻豆剧传媒免费观看 | 天天操综 | 在线视频欧美亚洲 | 99热官网| 综合国产视频 | 中文字幕在线日亚洲9 | 国产精品va最新国产精品视频 | 日韩一级理论片 | 免费手机黄色网址 | 麻豆播放 | 激情av资源网 | a在线视频v视频 | 国产在线视频一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 色婷婷综合五月 | 日韩精品久久一区二区 | 日韩成人中文字幕 | 亚洲自拍偷拍色图 | 亚洲欧美日韩精品久久奇米一区 | www色| 超碰在线人人爱 | 黄色三级免费 |