您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Xtrabacup如何備份,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
InnoDB 有個商業的InnoDB Hotbackup,可以對InnoDB引擎的表實現在線熱備。而 percona出品的Xtrabackup,是InnoDB Hotbackup的一個開源替代品,可以在線對InnoDB/XtraDB引擎的表進行物理備份。mysqldump支持在線備份,不過是邏輯備份,效率比較差。xtrabackup是開源的MySQL備份工具,物理備份,效率很不錯。
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex,其中xtrabackup只能備份InnoDB和XtraDB兩種數據表,innobackupex則封裝了xtrabackup,同時可以備份MyISAM數據表。Xtrabackup做備份的時候不能備份表結構、觸發器等等,智能紛紛.idb數據文件。另外innobackupex還不能完全支持增量備份,需要和xtrabackup結合起來實現全備的功能。
C語言編寫,可以備份Innodb、XtraD,不拷貝*.frm文件
支持的引擎有:
InnoDB、Xtradb:hotbackup
MyISAM: with read lock
具有的特點有如下幾點:
§ 1)備份過程快速、可靠;
§ (2)備份過程不會打斷正在執行的事務;
§ (3)能夠基于壓縮等功能節約磁盤空間和流量;
§ (4)自動實現備份檢驗;
§ (5)還原速度快;
Xtrabackup工具由Percona公司開發的開源熱備工具,可以到官網下載到最新的版本文件。
https://www.percona.com/downloads/下載各種版本,也可以在系統中使用wget下載。
方法一:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
安裝依賴的包
yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL installperl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
方法二:
下載好的rpm包,直接使用yum 安裝,自動安裝依賴包,但是需要有epel源的支持,所以要下載配置好epe'源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum install -y percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
RELOAD 和 LOCKTABLES 權限為了執行 FLUSHTABLES WITH READ LOCK
REPLICATION CLIENT 為了獲取binary log位置
CREATE TABLESPACE 權限為了導入表,用戶表級別的恢復
SUPER權限在slave環境下備份用來啟動和關閉slave線程
InnoDB 和非InnoDB文件的備份都是通過拷貝文件,但是實現的方式是不同的。
InnoDB是以page為粒度做的的(Xtrabackup),Xtrabackup在讀取每個page時會校驗checksum值,保證數據塊是一致的
非InnoDB是cp或者tar 命令,innobackupex在cp MyISAM文件時已經做了flush(FTWRL),磁盤上的文件也是完整的,所以最終備份集里的數據文件都是寫入完整的
1.5.1備份流程
規范操作,我們先建好全備和增量備份的路徑
[root@db01 backups]# pwd
/data/backups
[root@db01 backups]# ll
總用量 12
drwxr-xr-x 4 root root 4096 9月 4 17:28 full
drwxr-xr-x 4 root root 4096 9月 4 17:26 inc
操作過程:
mkdir/data/backups/{full,inc} -p
*****生產環境中為了數據一致性最好是ROW模式,因為其他的模式數據會丟失*****
命令語法格式:
innobackupex --user=User--password=PWD/data/backup/full --slave-info --safe-slave-backup --parallel=4--safe-slave-backup-timeout=7200 --rsync
--rsync 這個參數一般用作分布式數據庫集群的時候
全備步驟:
1、準備一個xtr_test數據庫,并在xtr_test數據庫中插入testbackup表,字段包含id,step兩個字段
mysql -uroot -p789 -S /data/3306/mysql.sock show databases; create database xtr_test; use xtr_test; select database(); create table testbackup(id int not nullauto_increment primary key,step varchar(50))engine=innodb; show tables; desc testbackup; show create table testbackup\G
結果樣子:
mysql> desc testbackup; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id |int(11) | NO | PRI | NULL | auto_increment | | step |varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.02 sec) mysql> show create table testbackup\G *************************** 1. row*************************** Table:testbackup Create Table: CREATE TABLE `testbackup` ( `id`int(11) NOT NULL AUTO_INCREMENT, `step`varchar(50) DEFAULT NULL, PRIMARY KEY(`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)
2、插入字段“firstfull backup”到testbackup表中
insert into testbackup(step) values('first fullbackup');
操作結果:
mysql> select * from testbackup; +----+-------------------+ | id | step | +----+-------------------+ | 1 | firstfull backup | +----+-------------------+ 1 row in set (0.02 sec)
3、執行全備
此時,我們創建的xtr_test數據庫中的testbackup表中有數據,而且我們創建的/data/backups/full文件下面沒有任何內容。下面執行全備,操作命令上面已經給出,此次操作使用的多實例所以用到了--socket參數。
innobackupex --user=root --password=789/data/backups/full --slave-info --safe-slave-backup --parallel=4--safe-slave-backup-timeout=7200 --socket=/data/3306/mysql.sock
執行結果一定要看到“160905 20:01:38 completedOK!" OK的字樣,才表示成功,從打出的日志我們也能看到備份的過程和上面給出的全備流程圖對比起來。
正確輸出以后會在/data/backups/full 指定的目錄中生成一個有時間和序號的目錄,這個目錄就是全備文件存放地方如:
[root@db01 ~]# ls -lrt /data/backups/full/ 總用量 4 drwxr-x--- 8 root root 4096 9月 5 20:012016-09-05_20-01-32
增量備份的前提是一定要有一個全備 ,只有有了全備才能進行所謂的增量備份!!!
增量備份的方式有兩種,分別為:
第一種:通過全備的文件
innobackupex --user=root --password=789 --incremental --incremental-lsn=1783249/data/backups/inc --slave-info--safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200--socket=/data/3306/mysql.sock
第二種方法:通過LSN
innobackupex --user=root --password=789 --incremental --incremental-lsn=1783249/data/backups/inc --slave-info--safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200--socket=/data/3306/mysql.sock
1、準備好全備最新一次的全備文件,這里只做了一次,所以只有一個目錄
[root@db01 ~]# ls -lrt /data/backups/full/ 總用量 4 drwxr-x--- 8 root root 4096 9月 5 20:01 2016-09-05_20-01-32
2、對xtr_test數據庫中的testbackup表,進行數據的插入,插入內容為“fist increment backup”
mysql> insert into testbackup(step)values('first increment backup'); Query OK, 1 row affected (0.02 sec) mysql> select * from testbackup; +----+------------------------+ | id | step | +----+------------------------+ | 1 | firstfull backup | | 2 | firstincrement backup | +----+------------------------+ 2 rows in set (0.01 sec)
3、執行增量備份
這里我們要確定好最新一次的全備(強調)!!!
innobackupex --user=root --password=789--incremental --incremental-basedir=/data/backups/full/ 2016-09-05_20-01-32 /data/backups/inc --slave-info--safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200 --socket=/data/3306/mysql.sock
這里執行結果一定要看到“completed OK!" OK的字樣,才表示成功如果是分布式也可以用--rsync,我們會在創建的inc目錄下發現創建了一個以時間和序號命名的目錄,這個目錄就是Xtrabackup備份的增量。
執行結果:
[root@db01 ~]# ll /data/backups/inc 總用量 4 drwxr-x--- 8 root root 4096 9月 5 20:19 2016-09-05_20-19-48
TIP:innodb默認是使用的系統表空間,我們可以通過配置參數來使idb文件到獨立空間中innodb_file_per_table = 1 這個是修改idb到獨立空間,如果數據庫是線上的,我們可以在配置文件my.cnf配置以上參數后,再使用set globalinnodb_file_per_table= 1 臨時生效。
alter table backupstep engine=innodb; 修改表的引擎,這個操作很費時間,需要在業務低點的時候操作
在創建的xtr_test數據庫中的testbackup表中再次插入內容“secondincrement backup”
mysql> insert into testbackup(step) values('secondincrement backup'); Query OK, 1 row affected (0.01 sec) mysql> select * from testbackup; +----+-------------------------+ | id | step | +----+-------------------------+ | 1 | firstfull backup | | 2 | first incrementbackup | | 3 | secondincrement backup | +----+-------------------------+ 3 rows in set (0.00 sec)
1、確定最新的全備文件
[root@db01 full]# pwd /data/backups/full [root@db01 full]# ls -lrt 總用量 4 drwxr-x--- 8 root root 4096 9月 5 20:01 2016-09-05_20-01-32
2、確定上一次增量備份的LSN值
[root@db01 inc]# ls -lrt 總用量 4 drwxr-x--- 8 root root 4096 9月 5 20:19 2016-09-05_20-19-48 [root@db01 inc]# cd 2016-09-05_20-19-48/ [root@db01 2016-09-05_20-19-48]# ls backup-my.cnf krik performance_schema xtrabackup_checkpoints xtr_test ibdata1.delta mysql test xtrabackup_info ibdata1.meta oldboy xtrabackup_binlog_info xtrabackup_logfile [root@db01 2016-09-05_20-19-48]# cat xtrabackup_checkpoints backup_type = incremental from_lsn = 1793716 #這個值一定是和上一次全備的last_lsn一樣,否則就是數據不全 to_lsn = 1794019 last_lsn = 1794019 compact = 0 recover_binlog_info = 0
4、
執行增量備份命令
innobackupex --user=root --password=789 --incremental--incremental-lsn=1794019 /data/backups/inc --slave-info --safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200--socket=/data/3306/mysql.sock
這個值是通過查看最近一次增量備份的xtrabackup_checkpoints得到
這里執行結果一定要看到“completed OK!" OK的字樣,才表示成功
執行結果會在指定的目錄/data/backups/inc下生成一個新的文件
[root@db01 2016-09-05_20-19-48]# cd .. [root@db01 inc]# pwd /data/backups/inc [root@db01 inc]# ls -lrt 總用量 8 drwxr-x--- 8 root root 4096 9月 5 20:19 2016-09-05_20-19-48 drwxr-x--- 8 root root 4096 9月 5 21:18 2016-09-05_21-18-30
到此我們對數據進行了完整的備份,下面會再創建一條語句,但是不會做增量備份,為了是下面測試二進制日志恢復數據。接下來要玩大的了,刪庫,后面看看能恢復回來不
生產環境中為了數據一致性最好是ROW模式,因為其他的模式數據會丟失
mysql> show variables like "log_bin"; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | ON | +---------------+-------+ 1 row in set (0.00 sec) mysql> show variables like"%binlog_format%"; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.00 sec) ot root 418 9月 4 15:34backup-my.cnf
這里只做redo,不做undo
數據庫的恢復,是從全備--->1次增量--->2次增量......--->N次增量直到故障點的位置的順序來恢復的
如果是全備:最近一次的全備----> binlog
mysql> insert into testbackup(step)values('second increment backup'); Query OK, 1 row affected (0.01 sec) mysql> select * from testbackup; +----+-------------------------+ | id | step | +----+-------------------------+ | 1 | firstfull backup | | 2 | firstincrement backup | | 3 | secondincrement backup | +----+-------------------------+ 3 rows in set (0.00 sec) mysql> insert into testbackup(step)values('last backup'); Query OK, 1 row affected (0.00 sec) mysql> select * from testbackup; +----+-------------------------+ | id | step | +----+-------------------------+ | 1 | firstfull backup | | 2 | firstincrement backup | | 3 | secondincrement backup | | 4 |last backup | +----+-------------------------+ 4 rows in set (0.00 sec) mysql> truncate table testbackup; Query OK, 0 rows affected (0.02 sec) mysql> select * from testbackup; Empty set (0.00 sec)
恢復數據庫的時候一定會重啟一次數據庫的,所以我們可以選擇停庫操作(如果可以的情況下),下面以停庫操作練習:
1、 停掉數據庫
[root@db01 inc]# /data/3306/mysql stop Stoping MySQL... [root@db01 inc]# netstat -lntup|grep 3306 [root@db01 inc]#
2、 恢復最近一次的全備,*****在操作前一定要先備份*****
[root@db01 backups]# for i in `ls/data/backups/`;do cp -r $i /data/backups/$i.bak;done [root@db01 backups]# ls full full.bak inc inc.bak [root@db01 backups]# cp -r /data/3306/data/data/backups/3306_data.bak [root@db01 backups]# ls 3306_data.bak full full.bak inc inc.bak
3、 導入全備數據
innobackupex --user=root --password=789 --apply-log--redo-only /data/backups/full/2016-09-05_20-01-32--socket=/data/3306/mysql.sock
要確認看到OK字樣,表示導入成功
1、 確定第一次增量備份的文件目錄
[root@db01 inc]# ls -lrt 總用量 8 drwxr-x--- 8 root root 4096 9月 5 20:19 2016-09-05_20-19-48 drwxr-x--- 8 root root 4096 9月 5 21:18 2016-09-05_21-18-30
通過時間排序可以看到這里第一次是2016-09-05_20-19-48,工作中可以自定義一些名字
2、 執行增量恢復
innobackupex --user=root --password=789 --apply-log--redo-only /data/backups/full/2016-09-05_20-01-32 --incremental-dir=/data/backups/inc/2016-09-05_20-19-48--socket=/data/3306/mysql.sock
看到OK字樣表示成功
innobackupex --user=root --password=789 --apply-log--redo-only /data/backups/full/2016-09-05_20-01-32 --incremental-dir=/data/backups/inc/2016-09-05_21-18-30--socket=/data/3306/mysql.sock
到此Xtrabackup昨晚了redo操作,下面我們要把他寫入數據文件中。這一步才是把數據放到數據庫中
數據寫入數據文件:
innobackupex --user=root --password=789--apply-log /data/backups/full/2016-09-05_20-01-32 --socket=/data/3306/mysql.sock
同樣是看到OK字樣表示執行成功。
Xtrabackup恢復是把所有的增量都疊加到了全備的身上,也就是恢復用的全備。它就是數據庫data,我們把這個全備目錄替換了3306數據庫的data數據
[root@db01 full]# rm -fr /data/3306/data/ [root@db01 full]# mv 2016-09-05_20-01-32//data/3306/data [root@db01 full]# ll /data/3306/data 總用量 163884 -rw-r----- 1 root root 418 9月 5 20:01 backup-my.cnf -rw-r----- 1 root root 134217728 9月 5 22:12 ibdata1 -rw-r----- 1 root root 4194304 9月 5 22:12 ib_logfile0 -rw-r----- 1 root root 4194304 9月 5 22:12 ib_logfile1 -rw-r----- 1 root root 4194304 9月 5 22:12 ib_logfile2 -rw-r----- 1 root root 12582912 9月 5 22:12 ibtmp1 drwxr-x--- 2 root root 4096 9月 5 22:10 krik drwxr-x--- 2 root root 4096 9月 5 22:10 mysql drwxr-x--- 2 root root 4096 9月 5 22:10 oldboy drwxr-x--- 2 root root 4096 9月 5 22:10 performance_schema drwxr-x--- 2 root root 4096 9月 5 22:10 test -rw-r----- 1 root root 22 9月 5 22:10 xtrabackup_binlog_info -rw-r--r-- 1 root root 33 9月 5 22:12 xtrabackup_binlog_pos_innodb -rw-r----- 1 root root 113 9月 5 22:12 xtrabackup_checkpoints -rw-r----- 1 root root 630 9月 5 22:10 xtrabackup_info -rw-r----- 1 root root 8388608 9月 5 22:04 xtrabackup_logfile drwxr-x--- 2 root root 4096 9月 5 22:10 xtr_test [root@db01 full]# chown -R mysql.mysql/data/3306/data/ [root@db01 full]# ll /data/3306/data 總用量 163884 -rw-r----- 1 mysql mysql 418 9月 5 20:01 backup-my.cnf -rw-r----- 1 mysql mysql 134217728 9月 5 22:12 ibdata1 -rw-r----- 1 mysql mysql 4194304 9月 5 22:12 ib_logfile0 -rw-r----- 1 mysql mysql 4194304 9月 5 22:12 ib_logfile1 -rw-r----- 1 mysql mysql 4194304 9月 5 22:12 ib_logfile2 -rw-r----- 1 mysql mysql 12582912 9月 5 22:12 ibtmp1 drwxr-x--- 2 mysql mysql 4096 9月 5 22:10 krik drwxr-x--- 2 mysql mysql 4096 9月 5 22:10 mysql drwxr-x--- 2 mysql mysql 4096 9月 5 22:10 oldboy drwxr-x--- 2 mysql mysql 4096 9月 5 22:10 performance_schema drwxr-x--- 2 mysql mysql 4096 9月 5 22:10 test -rw-r----- 1 mysql mysql 22 9月 5 22:10 xtrabackup_binlog_info -rw-r--r-- 1 mysql mysql 33 9月 5 22:12 xtrabackup_binlog_pos_innodb -rw-r----- 1 mysql mysql 113 9月 5 22:12 xtrabackup_checkpoints -rw-r----- 1 mysql mysql 630 9月 5 22:10 xtrabackup_info -rw-r----- 1 mysql mysql 8388608 9月 5 22:04 xtrabackup_logfile drwxr-x--- 2 mysql mysql 4096 9月 5 22:10 xtr_test
重啟數據庫測試
[root@db01 full]# cd /data/3306 [root@db01 3306]# ./mysql start Starting MySQL... [root@db01 3306]# netstat -lntup|grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 56714/mysqld mysql> select * from testbackup; +----+-------------------------+ | id | step | +----+-------------------------+ | 1 | firstfull backup | | 2 | firstincrement backup | | 3 | secondincrement backup | +----+-------------------------+ 3 rows in set (0.00 sec) 測試增量恢復正常,但是我們最后做的一次操作,沒有出現,下面使用二進制binglog來恢復
使用binlog恢復數據,我們需要來確定一個“范圍”這里我們需要確定從第二次增量備份后到執行刪除表的sql語句之前這個范圍;查找范圍,我們可以使用時間范圍、位置點pos來取這個范圍。
[root@db01 2016-09-05_21-18-30]# catxtrabackup_binlog_info mysql-bin.000010 1201
這里我們知道了第二次增量結束后的位置點事1201,我們將以這個位置點為起止位置點
由于測試binlog日志文件少,這里很好查找,生產中要根據時間點來截取一段時間范圍內,然后在去查找
[root@db01 3306]# mysqlbinlog--base64-output=decode-rows mysql-bin.000010 # at 1376 #160905 21:46:41 server id 1 end_log_pos 1403 Xid = 164 COMMIT/*!*/; # at 1403 #160905 21:46:59 server id 1 end_log_pos 1495 Query thread_id=7 exec_time=0 error_code=0 SET TIMESTAMP=1473083219/*!*/; truncate table testbackup /*!*/; # at 1495 #160905 21:52:16 server id 1 end_log_pos 1514 Stop DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
通過查找到語句后,我們找到了位置點,我們可以導出一個文件,通過vim編輯來搜索語句
通過上面找出的起止點和終止點來恢復數據
mysqlbinlog --base64-output=decode-rows -v--start-position=1201 --stop-position=1403 mysql-bin.000010
來再次確認
恢復:
[root@db01 3306]# mysqlbinlog --start-position=1201--stop-position=1403 mysql-bin.000010|mysql -uroot -p789 -S/data/3306/mysql.sock
數據中查看:
mysql> select * from testbackup; +----+-------------------------+ | id | step | +----+-------------------------+ | 1 | firstfull backup | | 2 | firstincrement backup | | 3 | secondincrement backup | | 4 |last backup | +----+-------------------------+ 4 rows in set (0.01 sec)
Xtrabackup常用參數選項如下:
--slave-info:
它會記錄master服務器的binary log的pos和name。會把記錄的信息記錄在xtrabackup_slave_info。在備份從庫時,可以使用該參數, 加上--slave-info備份目錄下會多生成一個xtrabackup_slave_info 文件, 這里會保存主日志文件以及偏移, 文件內容類似于:CHANGE MASTER TOMASTER_LOG_FILE='', MASTER_LOG_POS=0。
這個參數適用的場景:假設現在有主庫A和從庫B,目前想再添加一臺備庫C,并讓備庫C以主庫A為master;因為主庫A是生產庫,壓力一般比較大,所以我們就在備庫B上備份一個數據庫,然后把這個備份拿到C服務器上 并導入到C庫,接下來再在C服務器上執行change master的命令:其中 master_host是A的ip,而master_log_file和master_log_pos就是這個xtrabackup_slave_info里面的值
案例:http://blog.chinaunix.net/uid-26446098-id-3395111.html幫助理解
--safe-salve-backup:
它會停止slave SQL 進程,等備份完后,重新打開slave的SQL進程
--force-tar --stream=tar /tmp
這些命令是用來壓縮備份為tar文件。具體看官方文檔
--defaults-file=#
默認配置文件的路徑,如果不該參數,xtrabackup將從依次從以下位置查找配置文件/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf,并讀取配置文件中的[mysqld]和[xtrabackup]配置段。[mysqld]中只需要指定datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir、innodb_log_files_in_group、innodb_log_file_size6個參數即可讓xtrabackup正常工作。
--defaults-extra-file=#
如果使用了該參數,在讀取了全局配置文件之后,會再讀取這里指定的配置文件
--target-dir=name
備份文件的存放目錄路徑
--backup
實施備份到target-dir
--prepare
實施對備份文件進行恢復前的準備(生成InnoDB log file)
--print-param
打印備份或恢復時需要的參數
--use-memory=#
該參數在 prepare 的時候使用,控制prepare時innodb實例使用的內存量
--suspend-at-end
在target-dir目錄下產生一個xtrabackup_suspended文件,將xtrabackup進程掛起,不停地將數據文件的變化同步到備份文件,直到用戶手工刪除xtrabackup_suspended文件
--throttle=#
每秒IO次數,限制backup時使用的I/O操作量,使備份對數據庫正常業務的影響最小化
--log-stream
該參數在backup的時候使用,將xtrabackup_logfile的內容輸出到標準輸出,使用該參數時會自動使用suspend-at-end參數,innobackupex腳本的stream 模式會使用該參數。
--incremental-lsn=name
增量備份時只拷貝LSN比該參數指定值新的ibd pages,前次備份到了哪個LSN可以看前次備份集的xtrabackup_checkpoints文件
--incremental-basedir=name
該參數在backup的時候使用,備份比該參數指定位置的備份集新的idb pages
--incremental-dir=name
該參數在prepare的時候使用,指定prepare時產生的.delta 文件和日志文件的存放路徑
--tables=name
在備份file-per-table類型的數據文件時使用,使用正則表達式指定需要備份的innodb表
--datadir=name
MySQL數據庫的數據文件目錄
關于“Xtrabacup如何備份”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。