mysql不停庫不鎖表在線主從配置

mysql不停庫不鎖表在線主從配置

說明:

10G如下的數據庫:使用mysqldump導出數據和備份恢復比較合適,便捷。

100-500G數據庫:使用Percona-Xtrabackup備份工具,在線熱備,全量、增量、單表備份和還原。

更大數據量:採用分庫分表,或使用 LVM 快照來加快備份速度。

 

XtraBackup優點 :

  1. 無需中止數據庫進行InnoDB熱備
  2. 增量備份MySQL
  3. 流壓縮到傳輸到其它服務器
  4. 能比較容易地建立主從同步
  5. 備份MySQL時不會增大服務器負載

 

主從複製做用:

1.實現讀寫分離,減輕主庫負載mysql

2.數據安全,作備份恢復sql

3.主從切換作高可用數據庫

 

複製模式類型:

基於語句的複製:在主服務器上執行的SQL語句,在從服務器上執行一樣的語句,有可能會因爲SQL執行上下文環境不一樣而是數據不一致。安全

基於行的複製:把改變的內容複製過去,而不是把命令在從服務器上執行一遍。從mysql5.0開始支持,可以嚴格保證數據徹底一致,但此時用mysqlbinlog去分析日誌就沒啥意義。由於任何一條update語句,都會把涉及到的行數據所有set值,因此binlog文件會比較大。bash

混合類型的複製:默認採用基於語句的複製,一旦發現基於語句的沒法精確的複製時,就會採用基於行的複製。服務器

 

配置步驟:

主從版本一致—>主庫受權複製賬號—>確保開啓binlog及主從server_id惟一—>xtrabackup恢復到從庫—>記錄xtrabackup_binlog_info中binlog名稱及偏移量—>從庫change master to —>slave start—>檢查兩個yesapp

 

1.主庫:

建立負責複製的帳號:工具

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_ali'@'192.168.5.%' IDENTIFIED BY 'slave_ali_pass';  
mysql> FLUSH PRIVILEGES;

賦予備份用戶權限:大數據

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkppass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;

 

假設 MySQL 安裝目錄在/opt/mysql,my.cnf配置文件/opt/mysql/my.cnf,端口3306,數據目錄/opt/mysql_data,sock位於/opt/mysql_data/mysql.sock。備份數據放在/data/backup/mysql/spa

全量備份:

$ export BKP_PASS="bkppass"
$ innobackupex --defaults-file=/opt/mysql/my.cnf --host=localhost --port=3306 --user=bkpuser --password=${BKP_PASS} /data/backup/mysql

默認會以當天 日期+時間 戳命名備份目錄。如2018-09-04_20-00-00

 

2.從庫:

全量恢復:

innobackupex --use-memory=16G --apply-log 2018-09-04_20-00-00
 
確認數據庫是關閉的,而且datadir,目錄下爲空
$ innobackupex --defaults-file=/opt/mysql/my.cnf --use-memory=16G --copy-back 2018-09-04_20-00-00

 

3.作從庫

chown -R mysql.mysql /opt/mysql_data
/opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/my.cnf &
$ mysql -uslave_ali -p'slave_ali_pass' -S /opt/mysql_data/mysql.sock
mysql> change master to master_host=MASTER_HOST, master_port=3306, 
       master_user='slave_ali',master_password='slave_ali_pass',
       master_log_file='mysql-bin.000135', master_log_pos=262484673;
mysql> show slave status\G
mysql> start slave;
mysql> show slave status\G
相關文章
相關標籤/搜索