程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 使用xtrabackup實現MySQL主從復制

使用xtrabackup實現MySQL主從復制

編輯:MySQL綜合教程

使用xtrabackup實現MySQL主從復制


環境描述

主從環境

 

 

項目

Master

Slave

OS版本

SuSE 11sp1 x86_64

SuSE 11sp1 x86_64

MySQL版本

官方版本5.5.37

官方版本5.5.37

hostname

NDMC74

NDMC75

IP

192.168.223.132

192.168.223.133

PORT

3306

3306

server-id

1323306

1333306

參數文件

/etc/my.cnf

/etc/my.cnf

DATADIR

/data/mysql/mysql3306/data

/data/mysql/mysql3306/data

主從庫相關配置確認

(1)server-id配置

Master節點:

NDMC74:~ # mysql -S /tmp/mysql.sock -e "show global variables like 'server_id';"

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

| Variable_name | Value |

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

| server_id | 1323306 |

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

Slaver節點:

NDMC75:~ # mysql -S /tmp/mysql.sock -e "show global variables like 'server_id';"

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

| Variable_name | Value |

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

| server_id | 1333306 |

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

(2)確認binlog是否開啟

NDMC74:~ # mysql -S /tmp/mysql.sock -e "show global variables like 'log_bin';"

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

| Variable_name | Value |

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

| log_bin | ON |

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

Master上使用xtrabackup做全庫備份

NDMC74:~ # innobackupex --defaults-file=/etc/my.cnf /data/backup/innobackupex

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.

This software is published under

the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

Get the latest version of Percona XtraBackup, documentation, and help resources:

http://www.percona.com/xb/p

140731 11:20:44 innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' (using password: NO).

140731 11:20:44 innobackupex: Connected to MySQL server

140731 11:20:44 innobackupex: Executing a version check against the server...

140731 11:20:44 innobackupex: Done.

IMPORTANT: Please check that the backup run completes successfully.

At the end of a successful backup run innobackupex

prints "completed OK!".

innobackupex: Using mysql server version 5.5.37-log

innobackupex: Created backup directory /data/backup/innobackupex/2014-07-31_11-20-44

140731 11:20:44 innobackupex: Starting ibbackup with command: xtrabackup --defaults-file="/etc/my.cnf" --defaults-group="mysqld" --backup --suspend-at-end --target-dir=/data/backup/innobackupex/2014-07-31_11-20-44 --tmpdir=/tmp --extra-lsndir='/tmp'

innobackupex: Waiting for ibbackup (pid=25767) to suspend

innobackupex: Suspend file '/data/backup/innobackupex/2014-07-31_11-20-44/xtrabackup_suspended_2'

xtrabackup version 2.2.3 based on MySQL server 5.6.17 Linux (x86_64) (revision id: )

xtrabackup: uses posix_fadvise().

xtrabackup: cd to /data/mysql/mysql3306/data

xtrabackup: open files limit requested 8192, set to 8192

xtrabackup: using the following InnoDB configuration:

xtrabackup: innodb_data_home_dir = ./

xtrabackup: innodb_data_file_path = ibdata1:1G:autoextend

xtrabackup: innodb_log_group_home_dir = ./

xtrabackup: innodb_log_files_in_group = 3

xtrabackup: innodb_log_file_size = 268435456

>> log scanned up to (6118588398)

[01] Copying ./ibdata1 to /data/backup/innobackupex/2014-07-31_11-20-44/ibdata1

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

[01] ...done

[01] Copying ./test/tt.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/test/tt.ibd

[01] ...done

[01] Copying ./tp50/warehouse.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/warehouse.ibd

[01] ...done

[01] Copying ./tp50/item.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/item.ibd

[01] ...done

>> log scanned up to (6118588398)

[01] Copying ./tp50/district.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/district.ibd

[01] ...done

[01] Copying ./tp50/customer.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/customer.ibd

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

[01] ...done

[01] Copying ./tp50/history.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/history.ibd

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

[01] ...done

[01] Copying ./tp50/new_orders.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/new_orders.ibd

[01] ...done

[01] Copying ./tp50/orders.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/orders.ibd

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

[01] ...done

[01] Copying ./tp50/order_line.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/order_line.ibd

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

[01] ...done

[01] Copying ./tp50/stock.ibd to /data/backup/innobackupex/2014-07-31_11-20-44/tp50/stock.ibd

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

>> log scanned up to (6118588398)

[01] ...done

>> log scanned up to (6118588398)

xtrabackup: Creating suspend file '/data/backup/innobackupex/2014-07-31_11-20-44/xtrabackup_suspended_2' with pid '25767'

 

140731 11:22:07 innobackupex: Continuing after ibbackup has suspended

140731 11:22:07 innobackupex: Executing FLUSH TABLES WITH READ LOCK...

140731 11:22:07 innobackupex: All tables locked and flushed to disk

140731 11:22:07 innobackupex: Starting to backup non-InnoDB tables and files

innobackupex: in subdirectories of '/data/mysql/mysql3306/data'

innobackupex: Backing up files '/data/mysql/mysql3306/data/mysql/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (72 files)

>> log scanned up to (6118588398)

innobackupex: Backing up file '/data/mysql/mysql3306/data/test/tt.frm'

innobackupex: Backing up file '/data/mysql/mysql3306/data/test/v1.frm'

innobackupex: Backing up file '/data/mysql/mysql3306/data/test/v2.frm'

innobackupex: Backing up file '/data/mysql/mysql3306/data/test/v3.frm'

innobackupex: Backing up files '/data/mysql/mysql3306/data/performance_schema/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (18 files)

innobackupex: Backing up files '/data/mysql/mysql3306/data/tp50/*.{frm,isl,MYD,MYI,MAD,MAI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (10 files)

140731 11:22:08 innobackupex: Finished backing up non-InnoDB tables and files

140731 11:22:08 innobackupex: Executing FLUSH ENGINE LOGS...

140731 11:22:08 innobackupex: Waiting for log copying to finish

xtrabackup: The latest check point (for incremental): '6118588398'

xtrabackup: Stopping log copying thread.

.>> log scanned up to (6118588398)

xtrabackup: Creating suspend file '/data/backup/innobackupex/2014-07-31_11-20-44/xtrabackup_log_copied' with pid '25767'

xtrabackup: Transaction log of lsn (6118588398) to (6118588398) was copied.

140731 11:22:09 innobackupex: All tables unlocked

innobackupex: Backup created in directory '/data/backup/innobackupex/2014-07-31_11-20-44'

innobackupex: MySQL binlog position: filename 'mysql-bin.000009', position 376

140731 11:22:09 innobackupex: Connection to database server closed

140731 11:22:09 innobackupex: completed OK!

NDMC74:~ #

NDMC74:/data/backup/innobackupex/2014-07-31_11-20-44 # ls -l

總計 1048608

-rw-r--r-- 1 root root 357 07-31 11:20 backup-my.cnf

-rw-r----- 1 root root 1073741824 07-31 11:20 ibdata1

drwxr-xr-x 2 root root 4096 07-31 11:22 mysql

drwxr-xr-x 2 root root 4096 07-31 11:22 performance_schema

drwx------ 2 root root 71 07-31 11:22 test

drwx------ 2 root root 4096 07-31 11:22 tp50

-rw-r--r-- 1 root root 23 07-31 11:22 xtrabackup_binlog_info

-rw-r----- 1 root root 95 07-31 11:22 xtrabackup_checkpoints

-rw-r--r-- 1 root root 572 07-31 11:22 xtrabackup_info

-rw-r----- 1 root root 2560 07-31 11:22 xtrabackup_logfile

為了保證備份集中的數據一致,需要操作:

NDMC74:~ # innobackupex --apply-log /data/backup/innobackupex/2014-07-31_11-20-44

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.

This software is published under

the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

Get the latest version of Percona XtraBackup, documentation, and help resources:

http://www.percona.com/xb/p

IMPORTANT: Please check that the apply-log run completes successfully.

At the end of a successful apply-log run innobackupex

prints "completed OK!".

140731 11:28:16 innobackupex: Starting ibbackup with command: xtrabackup --defaults-file="/data/backup/innobackupex/2014-07-31_11-20-44/backup-my.cnf" --defaults-group="mysqld" --prepare --target-dir=/data/backup/innobackupex/2014-07-31_11-20-44 --tmpdir=/tmp

xtrabackup version 2.2.3 based on MySQL server 5.6.17 Linux (x86_64) (revision id: )

xtrabackup: cd to /data/backup/innobackupex/2014-07-31_11-20-44

xtrabackup: This target seems to be not prepared yet.

xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(6118588398)

xtrabackup: using the following InnoDB configuration for recovery:

xtrabackup: innodb_data_home_dir = ./

xtrabackup: innodb_data_file_path = ibdata1:1G:autoextend

xtrabackup: innodb_log_group_home_dir = ./

xtrabackup: innodb_log_files_in_group = 1

xtrabackup: innodb_log_file_size = 2097152

xtrabackup: using the following InnoDB configuration for recovery:

xtrabackup: innodb_data_home_dir = ./

xtrabackup: innodb_data_file_path = ibdata1:1G:autoextend

xtrabackup: innodb_log_group_home_dir = ./

xtrabackup: innodb_log_files_in_group = 1

xtrabackup: innodb_log_file_size = 2097152

xtrabackup: Starting InnoDB instance for recovery.

xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)

InnoDB: Using atomics to ref count buffer pool pages

InnoDB: The InnoDB memory heap is disabled

InnoDB: Mutexes and rw_locks use GCC atomic builtins

InnoDB: Compressed tables use zlib 1.2.3

InnoDB: Using CPU crc32 instructions

InnoDB: Initializing buffer pool, size = 100.0M

InnoDB: Completed initialization of buffer pool

InnoDB: Highest supported file format is Barracuda.

InnoDB: 128 rollback segment(s) are active.

InnoDB: Waiting for purge to start

InnoDB: 5.6.17 started; log sequence number 6118588398

[notice (again)]

If you use binary log and don't use any hack of group commit,

the binary log position seems to be:

InnoDB: Last MySQL binlog file position 0 324258362, file name ./mysql-bin.000008

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

InnoDB: FTS optimize thread exiting.

InnoDB: Starting shutdown...

InnoDB: Shutdown completed; log sequence number 6118588408

140731 11:28:18 innobackupex: Restarting xtrabackup with command: xtrabackup --defaults-file="/data/backup/innobackupex/2014-07-31_11-20-44/backup-my.cnf" --defaults-group="mysqld" --prepare --target-dir=/data/backup/innobackupex/2014-07-31_11-20-44 --tmpdir=/tmp

for creating ib_logfile*

xtrabackup version 2.2.3 based on MySQL server 5.6.17 Linux (x86_64) (revision id: )

xtrabackup: cd to /data/backup/innobackupex/2014-07-31_11-20-44

xtrabackup: This target seems to be already prepared.

xtrabackup: notice: xtrabackup_logfile was already used to '--prepare'.

xtrabackup: using the following InnoDB configuration for recovery:

xtrabackup: innodb_data_home_dir = ./

xtrabackup: innodb_data_file_path = ibdata1:1G:autoextend

xtrabackup: innodb_log_group_home_dir = ./

xtrabackup: innodb_log_files_in_group = 3

xtrabackup: innodb_log_file_size = 268435456

xtrabackup: using the following InnoDB configuration for recovery:

xtrabackup: innodb_data_home_dir = ./

xtrabackup: innodb_data_file_path = ibdata1:1G:autoextend

xtrabackup: innodb_log_group_home_dir = ./

xtrabackup: innodb_log_files_in_group = 3

xtrabackup: innodb_log_file_size = 268435456

xtrabackup: Starting InnoDB instance for recovery.

xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)

InnoDB: Using atomics to ref count buffer pool pages

InnoDB: The InnoDB memory heap is disabled

InnoDB: Mutexes and rw_locks use GCC atomic builtins

InnoDB: Compressed tables use zlib 1.2.3

InnoDB: Using CPU crc32 instructions

InnoDB: Initializing buffer pool, size = 100.0M

InnoDB: Completed initialization of buffer pool

InnoDB: Setting log file ./ib_logfile101 size to 256 MB

InnoDB: Progress in MB: 100 200

InnoDB: Setting log file ./ib_logfile1 size to 256 MB

InnoDB: Progress in MB: 100 200

InnoDB: Setting log file ./ib_logfile2 size to 256 MB

InnoDB: Progress in MB: 100 200

InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0

InnoDB: New log files created, LSN=6118588408

InnoDB: Highest supported file format is Barracuda.

InnoDB: 128 rollback segment(s) are active.

InnoDB: Waiting for purge to start

InnoDB: 5.6.17 started; log sequence number 6118588428

[notice (again)]

If you use binary log and don't use any hack of group commit,

the binary log position seems to be:

InnoDB: Last MySQL binlog file position 0 324258362, file name ./mysql-bin.000008

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

InnoDB: FTS optimize thread exiting.

InnoDB: Starting shutdown...

InnoDB: Shutdown completed; log sequence number 6118588438

140731 11:28:26 innobackupex: completed OK!

NDMC74:~ # 

Master上創建同步賬號並授權REPLICATION

mysql> CREATE USER 'repl'@'192.168.223.%' IDENTIFIED BY 'replpass';

Query OK, 0 rows affected (0.02 sec)

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'192.168.223.%';

Query OK, 0 rows affected (0.02 sec)

然後在Slave上測試,看看能否使用repl用戶登錄Master服務器:

NDMC75:~ # mysql -h192.168.223.132 -urepl -preplpass

mysql> show grants\G

*************************** 1. row ***************************

Grants for [email protected].%: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'192.168.223.%' IDENTIFIED BY PASSWORD '*D98280F03D0F78162EBDBB9C883FC01395DEA2BF'

1 row in set (0.00 sec) 

將Master的全備scp到Slave主機上

NDMC74:~ # cd /data/backup/innobackupex/

NDMC74:/data/backup/innobackupex # scp -r ./2014-07-31_11-20-44 192.168.223.133:/data/backup

將Slave上的MySQL停掉,然後將Master的備份文件放到Slave的datadir目錄下:

NDMC75:~ # mv /data/backup/2014-07-31_11-20-44 /data/mysql/mysql3306/data

NDMC75:~ # cd /data/mysql/mysql3306

NDMC75:/data/mysql/mysql3306 # chown -R mysql:mysql data

注意:Slave的my.cnf文件和Master的一樣,只是修改一下server-id即可。

啟動Slave數據庫

NDMC75:~ # /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

NDMC75:~ # ps -ef |grep mysqld

mysql 1293 1 1 11:50 pts/0 00:00:01 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf

root 3124 19598 0 11:51 pts/0 00:00:00 grep mysqld

同時查看一下error.log文件,看看有沒有錯誤信息。

在slave上執行change master設置主服務器復制信息

Master binlog信息從備份文件中可以獲得:

NDMC74:~ # cd /data/backup/innobackupex/2014-07-31_11-20-44

NDMC74:~ # cat xtrabackup_binlog_info

mysql-bin.000009 376

mysql> change master to master_host='192.168.223.132', master_user='repl', master_password='replpass',master_port=3306,master_log_file='mysql-bin.000009',master_log_pos=376;

Query OK, 0 rows affected (0.05 sec)

在slave上啟動復制

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

檢查主從復制是否正常

mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.223.132

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000009

Read_Master_Log_Pos: 452

Relay_Log_File: mysql-relay-bin.000002

Relay_Log_Pos: 329

Relay_Master_Log_File: mysql-bin.000009

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 452

Relay_Log_Space: 485

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1323306

1 row in set (0.00 sec)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved