自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【博文推薦】不停止MySQL服務(wù)增加從庫的兩種方式

數(shù)據(jù)庫 MySQL
一般在線增加從庫有兩種方式,一種是通過mysqldump備份主庫,恢復(fù)到從庫,mysqldump是邏輯備份,數(shù)據(jù)量大時(shí),備份速度會(huì)很慢,鎖表的時(shí)間也會(huì)很長。另一種是通過xtrabackup工具備份主庫,恢復(fù)到從庫,xtrabackup是物理備份,備份速度快,不鎖表。為什么不鎖表?因?yàn)樽陨頃?huì)監(jiān)控主庫日志,如果有更新的數(shù)據(jù),就會(huì)先寫到一個(gè)文件中,然后再回歸到備份文件中,從而保持?jǐn)?shù)據(jù)一致性。
  本文出自51CTO博客博主李振良的技術(shù)博客,如有任何問題請進(jìn)入博主頁面互動(dòng)討論。

博文地址:http://lizhenliang.blog.51cto.com/7876557/1669829

現(xiàn)在生產(chǎn)環(huán)境MySQL數(shù)據(jù)庫是一主一從,由于業(yè)務(wù)量訪問不斷增大,故再增加一臺(tái)從庫。前提是不能影響線上業(yè)務(wù)使用,也就是說不能重啟MySQL服務(wù),為了避免出現(xiàn)其他情況,選擇在網(wǎng)站訪問量低峰期時(shí)間段操作。

一般在線增加從庫有兩種方式,一種是通過mysqldump備份主庫,恢復(fù)到從庫,mysqldump是邏輯備份,數(shù)據(jù)量大時(shí),備份速度會(huì)很慢,鎖表的時(shí)間也會(huì)很長。另一種是通過xtrabackup工具備份主庫,恢復(fù)到從庫,xtrabackup是物理備份,備份速度快,不鎖表。為什么不鎖表?因?yàn)樽陨頃?huì)監(jiān)控主庫日志,如果有更新的數(shù)據(jù),就會(huì)先寫到一個(gè)文件中,然后再回歸到備份文件中,從而保持?jǐn)?shù)據(jù)一致性。

服務(wù)器信息:

主庫:192.168.18.212(原有)

從庫1:192.168.18.213(原有)

從庫2:192.168.18.214(新增)

數(shù)據(jù)庫版本:MySQL5.5

存儲(chǔ)引擎:Innodb

測試庫名:weibo

一、mysqldump方式

MySQL主從是基于binlog日志,所以在安裝好數(shù)據(jù)庫后就要開啟binlog。這樣好處是,一方面可以用binlog恢復(fù)數(shù)據(jù)庫,另一方面可以為主從做準(zhǔn)備。

原有主庫配置參數(shù)如下:

 

  1. # vi my.cnf 
  2. server-id = 1             #id要唯一 
  3. log-bin = mysql-bin         #開啟binlog日志 
  4. auto-increment-increment = 1   #在Ubuntu系統(tǒng)中MySQL5.5以后已經(jīng)默認(rèn)是1 
  5. auto-increment-offset = 1  
  6. slave-skip-errors = all      #跳過主從復(fù)制出現(xiàn)的錯(cuò)誤 

 

1. 主庫創(chuàng)建同步賬號

 

  1. mysql> grant all on *.* to 'sync'@'192.168.18.%' identified by 'sync'

2. 從庫配置MySQL

 

  1. # vi my.cnf 
  2. server-id = 3             #這個(gè)設(shè)置3 
  3. log-bin = mysql-bin         #開啟binlog日志 
  4. auto-increment-increment = 1   #這兩個(gè)參數(shù)在Ubuntu系統(tǒng)中MySQL5.5以后都已經(jīng)默認(rèn)是1 
  5. auto-increment-offset = 1  
  6. slave-skip-errors = all      #跳過主從復(fù)制出現(xiàn)的錯(cuò)誤 

 

3. 備份主庫

 

  1. # mysqldump -uroot -p123 --routines --single_transaction --master-data=2 --databases weibo > weibo.sql 

參數(shù)說明:

--routines:導(dǎo)出存儲(chǔ)過程和函數(shù)

--single_transaction:導(dǎo)出開始時(shí)設(shè)置事務(wù)隔離狀態(tài),并使用一致性快照開始事務(wù),然后unlock tables;而lock-tables是鎖住一張表不能寫操作,直到dump完畢。

--master-data:默認(rèn)等于1,將dump起始(change master to)binlog點(diǎn)和pos值寫到結(jié)果中,等于2是將change master to寫到結(jié)果中并注釋。

4. 把備份庫拷貝到從庫

 

  1. # scp weibo.sql root@192.168.18.214:/home/root 

5. 在主庫創(chuàng)建test_tb表,模擬數(shù)據(jù)庫新增數(shù)據(jù),weibo.sql是沒有的

 

  1. mysql> create table test_tb(id int,name varchar(30)); 

6. 從庫導(dǎo)入備份庫

 

  1. # mysql -uroot -p123 -e 'create database weibo;' 
  2. # mysql -uroot -p123 weibo < weibo.sql 

 

7. 在備份文件weibo.sql查看binlog和pos值

 

  1. # head -25 weibo.sql 
  2. -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;   #大概22行 

 

8. 從庫設(shè)置從這個(gè)日志點(diǎn)同步,并啟動(dòng)

 

  1. mysql> change master to master_host='192.168.18.212'
  2.     -> master_user='sync'
  3.     -> master_password='sync'
  4.     -> master_log_file='mysql-bin.000001'
  5.     -> master_log_pos=107; 
  6. mysql> start slave; 

 

  1. mysql> show slave status\G; 
  2. ERROR 2006 (HY000): MySQL server has gone away 
  3. No connection. Trying to reconnect... 
  4. Connection id:    90 
  5. Current database: *** NONE *** 
  6. *************************** 1. row *************************** 
  7.                Slave_IO_State: Waiting for master to send event 
  8.                   Master_Host: 192.168.18.212 
  9.                   Master_User: sync 
  10.                   Master_Port: 3306 
  11.                 Connect_Retry: 60 
  12.               Master_Log_File: mysql-bin.000001 
  13.           Read_Master_Log_Pos: 358 
  14.                Relay_Log_File: mysqld-relay-bin.000003 
  15.                 Relay_Log_Pos: 504 
  16.         Relay_Master_Log_File: mysql-bin.000001 
  17.              Slave_IO_Running: Yes 
  18.             Slave_SQL_Running: Yes 
  19. ...... 

可以看到IO和SQL線程均為YES,說明主從配置成功。

9. 從庫查看weibo庫里面的表

 

  1. mysql> show tables; 
  2. +---------------------------+ 
  3. | Tables_in_weibo           | 
  4. +---------------------------+ 
  5. | test_tb                   | 

 

發(fā)現(xiàn)剛才模擬創(chuàng)建的test_tb表已經(jīng)同步過來!

#p#

二、xtrabackup方式(推薦)

在上面配置基礎(chǔ)上做實(shí)驗(yàn),先刪除掉從庫配置:

 

  1. mysql> stop slave;         #停止同步 
  2. mysql> reset slave;        #清除從連接信息 
  3. mysql> show slave status\G;   #再查看從狀態(tài),可以看到IO和SQL線程都為NO 
  4. mysql> drop database weibo;   #刪除weibo庫 

 

此時(shí),從庫現(xiàn)在和新裝的一樣,繼續(xù)前進(jìn)!

1. 主庫使用xtrabackup備份

 

  1. # innobackupex --user=root --password=123 ./ 

生成一個(gè)以時(shí)間為命名的備份目錄:2015-07-01_16-49-43

 

  1. # ll 2015-07-01_16-49-43/ 
  2. total 18480 
  3. drwxr-xr-x 5 root root     4096 Jul  1 16:49 ./ 
  4. drwx------ 4 root root     4096 Jul  1 16:49 ../ 
  5. -rw-r--r-- 1 root root      188 Jul  1 16:49 backup-my.cnf 
  6. -rw-r----- 1 root root 18874368 Jul  1 16:49 ibdata1 
  7. drwxr-xr-x 2 root root     4096 Jul  1 16:49 mysql/ 
  8. drwxr-xr-x 2 root root     4096 Jul  1 16:49 performance_schema/ 
  9. drwxr-xr-x 2 root root    12288 Jul  1 16:49 weibo/ 
  10. -rw-r--r-- 1 root root       21 Jul  1 16:49 xtrabackup_binlog_info 
  11. -rw-r----- 1 root root       89 Jul  1 16:49 xtrabackup_checkpoints 
  12. -rw-r--r-- 1 root root      563 Jul  1 16:49 xtrabackup_info 
  13. -rw-r----- 1 root root     2560 Jul  1 16:49 xtrabackup_logfile 

 

2. 把備份目錄拷貝到從庫上

 

  1. # scp -r 2015-07-01_16-49-43 root@192.168.18.214:/home/root 

3. 從庫上把MySQL服務(wù)停掉,刪除datadir目錄,將備份目錄重命名為datadir目錄

 

  1. # sudo rm -rf /var/lib/mysql/ 
  2. # sudo mv 2015-07-01_16-49-43/ /var/lib/mysql 
  3. # sudo chown mysql.mysql -R /var/lib/mysql 
  4. # sudo /etc/init.d/mysql start 
  5. # ps -ef |grep mysql    #查看已經(jīng)正常啟動(dòng) 
  6. mysql     8832     1  0 16:55 ?        00:00:00 /usr/sbin/mysqld 

 

4. 在主庫創(chuàng)建test_tb2表,模擬數(shù)據(jù)庫新增數(shù)據(jù)

 

  1. mysql> create table test_tb2(id int,name varchar(30)); 

5. 從備份目錄中xtrabackup_info文件獲取到binlog和pos位置

 

  1. # cat /var/lib/mysql/xtrabackup_info  
  2. uuid = 201af9db-1fce-11e5-96b0-525400e4239d 
  3. name =  
  4. tool_name = innobackupex 
  5. tool_command = --user=root --password=... ./ 
  6. tool_version = 1.5.1-xtrabackup 
  7. ibbackup_version = xtrabackup version 2.2.11 based on MySQL server 5.6.24 Linux (x86_64) (revision id: ) 
  8. server_version = 5.5.43-0ubuntu0.12.04.1-log 
  9. start_time = 2015-07-01 16:49:43 
  10. end_time = 2015-07-01 16:49:46 
  11. lock_time = 1 
  12. binlog_pos = filename 'mysql-bin.000001', position 429    #這個(gè)位置 
  13. innodb_from_lsn = 0 
  14. innodb_to_lsn = 1598188 
  15. partial = N 
  16. incremental = N 
  17. format = file 
  18. compact = N 
  19. compressed = N 

 

6. 從庫設(shè)置從這個(gè)日志點(diǎn)同步,并啟動(dòng)

 

  1. mysql> change master to master_host='192.168.18.212'
  2.     -> master_user='sync'
  3.     -> master_password='sync'
  4.     -> master_log_file='mysql-bin.000001'
  5.     -> master_log_pos=429; 
  6. mysql> start slave; 

 

  1. mysql> show slave status\G; 
  2. *************************** 1. row *************************** 
  3.                Slave_IO_State: Waiting for master to send event 
  4.                   Master_Host: 192.168.18.212 
  5.                   Master_User: sync 
  6.                   Master_Port: 3306 
  7.                 Connect_Retry: 60 
  8.               Master_Log_File: mysql-bin.000001 
  9.           Read_Master_Log_Pos: 539 
  10.                Relay_Log_File: mysqld-relay-bin.000002 
  11.                 Relay_Log_Pos: 363 
  12.         Relay_Master_Log_File: mysql-bin.000001 
  13.              Slave_IO_Running: Yes 
  14.             Slave_SQL_Running: Yes 
  15. ...... 

可以看到IO和SQL線程均為YES,說明主從配置成功。

9. 從庫查看weibo庫里面的表

 

  1. mysql> show tables; 
  2. +---------------------------+ 
  3. | Tables_in_weibo           | 
  4. +---------------------------+ 
  5. | test_tb                   | 
  6. | test_tb2                  | 

 

發(fā)現(xiàn)剛才模擬創(chuàng)建的test_tb2表已經(jīng)同步過來。
 

責(zé)任編輯:Ophira 來源: 51CTO博客
相關(guān)推薦

2015-11-26 10:05:21

MySQL服務(wù)增加從庫

2010-11-29 09:56:00

sybase數(shù)據(jù)庫備份

2025-01-14 00:00:00

場景線程數(shù)據(jù)

2011-03-03 10:26:04

Pureftpd

2021-05-27 10:57:01

TCP定時(shí)器網(wǎng)絡(luò)協(xié)議

2010-04-06 10:52:06

Oracle數(shù)據(jù)庫

2009-11-06 12:59:56

WCF服務(wù)通信

2009-06-25 13:43:00

Buffalo AJA

2010-10-21 16:24:18

sql server升

2010-08-06 09:38:11

Flex讀取XML

2023-03-29 13:06:36

2010-09-07 11:09:59

2010-04-28 16:23:18

Oracle數(shù)據(jù)庫

2010-10-11 10:31:51

MySQL分區(qū)

2022-03-24 23:04:37

linux靜態(tài)庫動(dòng)態(tài)庫

2010-07-27 15:03:37

Flex ArrayC

2010-05-10 18:19:00

負(fù)載平衡技術(shù)

2011-03-23 11:22:14

oracle dbli

2024-09-20 11:32:28

.NET內(nèi)存管理

2010-07-14 10:30:26

Perl多線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號