innobackupex 備份資料搭建 MySQL Slave

來源:互聯網
上載者:User

標籤:complete   注意   .so   tables   oba   全域   成就   date   資料   


簡介:

資料量比較大時,使用 innobackupex 備份資料新增 MySQL Slave 節點。

安裝 innobackupex 工具,我這裡寫過一次:http://www.cnblogs.com/wangxiaoqiangs/p/5961413.html

情境:

  A -> B    -> C    -> D -> E

一、增加節點 C

# 由於有從庫 B ,所以我們去 B 上面執行備份

shell > innobackupex --user=xx --password=xx --slave-info --safe-slave-backup --no-timestamp alldatabase

# 儲存 B 的 Slave 資訊,因為新增的節點 C 與 B 同級

shell > scp -r alldatabase mysql-nodeC:/root

# 將備份資料拷貝到新節點 C 上,如果節點 C 在外網,建議先壓縮一下

# 登入節點 C

shell > vim /etc/my.cnf  # 準備設定檔[client]port           = 3306socket         = /tmp/mysql.sock[mysqld]socket         = /tmp/mysql.sockdatadir        = /data/mysql_datalog-error      = error.logskip-name-resolveskip-external-lockingdefault-storage-engine = MyISAMkey_buffer_size = 3072Msort_buffer_size = 256Mread_buffer_size = 4Mread_rnd_buffer_size = 8Mmyisam_sort_buffer_size = 128Mtable_open_cache = 1024table_definition_cache = 1024thread_cache_size = 8back_log = 512connect_timeout = 20max_connections = 1500wait_timeout = 120interactive_timeout = 120max_allowed_packet = 1024Mslow_query_log = ONlong_query_time = 2slow-query-log-file = slow.logquery_cache_type = 0query_cache_size = 0query_cache_limit = 0tmp_table_size = 128Mmax_heap_table_size = 128Minnodb_file_per_table = 0innodb_buffer_pool_size = 1024Mread-only = 1relay-log = mysql-relay-binexpire_logs_days = 7server-id = 1020

# 注意:server-id 必須全域唯一
# 如果新增的是節點 D,那麼需要將後4行替換為如下7行

relay-log = mysql-relay-binrelay_log_purge = ONlog-slave-updates = 1log-bin = mysql-binbinlog_format = mixedexpire_logs_days = 7server-id = 1020

# 因為節點 D 不僅是 Master A 的 Slave,同時也是節點 E 的 Master

shell > innobackupex --apply-log alldatabase  # 在備份目錄上應用日誌161111 13:56:04 completed OK!shell > innobackupex --copy-back alldatabase  # 將備份檔案拷貝到 my.cnf 中 datadir 指定目錄161111 14:10:21 completed OK!shell > chown -R mysql.mysql /data/mysql_datashell > /etc/init.d/mysql.server startshell > cat /data/mysql_data/xtrabackup_slave_info  # 記錄 master_log_file 和 master_log_pos 的值CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.003742‘, MASTER_LOG_POS=1072788827shell > mysql -uxx -pxx -Amysql> stop slave;mysql> reset slave all;mysql> change master to master_host=‘x.x.x.x‘,master_user=‘xx‘,master_password=‘xx‘,master_log_file=‘mysql-bin.003742‘,master_log_pos=1072788827;mysql> start slave;mysql> show slave status\G             Slave_IO_Running: Yes            Slave_SQL_Running: Yesmysql> quit

# master_host=‘A‘
# MySQL Slave 節點 C 搭建完成

二、新增節點 E

# 由於節點 D 後面沒有從節點,所以備份要在節點 D 上執行

shell > innobackupex --user=xx --password=xx --no-timestamp alldatabase

# 我們要的是節點 D 的資訊,所以不需要儲存 Slave 資訊( Slave 資訊為跟節點 A 同步資訊 )

shell > scp -r alldatabase mysql-nodeE:/root

# 將備份資料拷貝到新節點 E 上,如果節點 E 在外網,建議先壓縮一下

shell > mysql -uxx -pxx -A  # 跟上面不一樣的地方,需要建立立一個授權使用者mysql> grant replication slave on *.* to [email protected]‘%‘ identified by ‘xx‘;# 登入節點 Eshell > vim /etc/my.cnf  # 準備設定檔[client]port           = 3306socket         = /tmp/mysql.sock[mysqld]socket         = /tmp/mysql.sockdatadir        = /data/mysql_datalog-error      = error.logskip-name-resolveskip-external-lockingdefault-storage-engine = MyISAMkey_buffer_size = 3072Msort_buffer_size = 256Mread_buffer_size = 4Mread_rnd_buffer_size = 8Mmyisam_sort_buffer_size = 128Mtable_open_cache = 1024table_definition_cache = 1024thread_cache_size = 8back_log = 512connect_timeout = 20max_connections = 1500wait_timeout = 120interactive_timeout = 120max_allowed_packet = 1024Mslow_query_log = ONlong_query_time = 2slow-query-log-file = slow.logquery_cache_type = 0query_cache_size = 0query_cache_limit = 0tmp_table_size = 128Mmax_heap_table_size = 128Minnodb_file_per_table = 0innodb_buffer_pool_size = 1024Mread-only = 1relay-log = mysql-relay-binexpire_logs_days = 7server-id = 10201

# 同樣注意 server-id 全域唯一

shell > chown -R mysql.mysql /data/mysql_datashell > /etc/init.d/mysql.server startshell > cat /data/mysql_data/xtrabackup_infobinlog_pos = filename ‘mysql-bin.000001‘, position ‘112094418‘shell > mysql -uxx -pxx -Amysql> stop slave;mysql> reset slave all;mysql> change master to master_host=‘x.x.x.x‘,master_user=‘rep‘,master_password=‘xx‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=112094418;mysql> start slave;mysql> show slave status\G             Slave_IO_Running: Yes            Slave_SQL_Running: Yesmysql> quit

# master_host=‘D‘
# master_user=‘rep‘ # 這裡的使用者密碼,是節點 D 上的,並不是節點 A 上的
# MySQL Slave 節點 E 搭建完成

# 不採用 innobackupex 時,可以使用如下方法:
# stop slave;
# flush tables with read lock;
# show slave status\G
# 記錄 master_log_file,master_log_pos
# 新開一個終端,scp -r /data/mysql_data x.x.x.x:/data/mysql_data,拷貝完成就可以 unlock tables;
# chown -R mysql.mysql /data/mysql_data
# /etc/init.d/mysql.server start
# mysql -uxx -pxx -A
# chanage master to ...
# start slave;

# mysql.sock 如果放在 datadir 下,記得 chmod 755 /data/mysql_data,不然 zabbix_agentd 串連不到資料庫
# End

innobackupex 備份資料搭建 MySQL Slave

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.