日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
不停止MySQL服務(wù)增加從庫(kù)的兩種方式

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

成都創(chuàng)新互聯(lián)專注于企業(yè)成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、網(wǎng)站重做改版、紫陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為紫陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

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

服務(wù)器信息:

  • 主庫(kù):192.168.18.212(原有)

  • 從庫(kù)1:192.168.18.213(原有)

  • 從庫(kù)2:192.168.18.214(新增)

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

  • 存儲(chǔ)引擎:Innodb

  • 測(cè)試庫(kù)名:weibo

一、mysqldump方式

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

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

 
 
  1. # vi my.cnf
  2. server-id = 1             #id要唯一
  3. log-bin = mysql-bin         #開(kāi)啟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      #跳過(guò)主從復(fù)制出現(xiàn)的錯(cuò)誤

1. 主庫(kù)創(chuàng)建同步賬號(hào)

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

2. 從庫(kù)配置MySQL

 
 
  1. # vi my.cnf
  2. server-id = 3             #這個(gè)設(shè)置3
  3. log-bin = mysql-bin         #開(kāi)啟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      #跳過(guò)主從復(fù)制出現(xiàn)的錯(cuò)誤

3. 備份主庫(kù)

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

參數(shù)說(shuō)明:

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

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

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

4. 把備份庫(kù)拷貝到從庫(kù)

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

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

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

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

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

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

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

8. 從庫(kù)設(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;
  7. mysql> show slave status\G;
  8. ERROR 2006 (HY000): MySQL server has gone away
  9. No connection. Trying to reconnect...
  10. Connection id:    90
  11. Current database: *** NONE ***
  12. *************************** 1. row ***************************
  13.                Slave_IO_State: Waiting for master to send event
  14.                   Master_Host: 192.168.18.212
  15.                   Master_User: sync
  16.                   Master_Port: 3306
  17.                 Connect_Retry: 60
  18.               Master_Log_File: mysql-bin.000001
  19.           Read_Master_Log_Pos: 358
  20.                Relay_Log_File: mysqld-relay-bin.000003
  21.                 Relay_Log_Pos: 504
  22.         Relay_Master_Log_File: mysql-bin.000001
  23.              Slave_IO_Running: Yes
  24.             Slave_SQL_Running: Yes
  25. ......

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

9. 從庫(kù)查看weibo庫(kù)里面的表

mysql> show tables;
+---------------------------+
| Tables_in_weibo           |
+---------------------------+
| test_tb                   |

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

二、xtrabackup方式(推薦)

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

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

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

1. 主庫(kù)使用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. 把備份目錄拷貝到從庫(kù)上

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

3. 從庫(kù)上把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.在主庫(kù)創(chuàng)建test_tb2表,模擬數(shù)據(jù)庫(kù)新增數(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. 從庫(kù)設(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;
  7. mysql> show slave status\G;
  8. *************************** 1. row ***************************
  9.                Slave_IO_State: Waiting for master to send event
  10.                   Master_Host: 192.168.18.212
  11.                   Master_User: sync
  12.                   Master_Port: 3306
  13.                 Connect_Retry: 60
  14.               Master_Log_File: mysql-bin.000001
  15.           Read_Master_Log_Pos: 539
  16.                Relay_Log_File: mysqld-relay-bin.000002
  17.                 Relay_Log_Pos: 363
  18.         Relay_Master_Log_File: mysql-bin.000001
  19.              Slave_IO_Running: Yes
  20.             Slave_SQL_Running: Yes
  21. ......

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

9. 從庫(kù)查看weibo庫(kù)里面的表

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

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


本文名稱:不停止MySQL服務(wù)增加從庫(kù)的兩種方式
地址分享:http://m.5511xx.com/article/cdgjocc.html