利用percona-xtrabackup快速搭建MySQL資料庫主從複製
原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。否則將追究法律責任。http://dgd2010.blog.51cto.com/1539422/1709183
應用場景:
1
2
3
4
5
6
7
8
9
10
11
|
# Set mysql library ln -s /usr/local/mysql/lib/libmysqlclient .so.18.0.0 /usr/lib64/libmysqlclient .so.18.0.0
ln -s /usr/local/mysql/lib/libmysqlclient .so.18.0.0 /usr/lib64/libmysqlclient .so.18
ln -s /usr/local/mysql/lib/libmysqlclient .so.18.0.0 /usr/lib64/libmysqlclient .so
ls -l /usr/lib64/libmysqlclient .so.18.0.0
ls -l /usr/lib64/libmysqlclient .so.18
ls -l /usr/lib64/libmysqlclient .so
vim /etc/ld .so.conf.d /mysql-x86_64 .conf
/usr/lib64/mysql /usr/local/mysql/lib ldconfig |
工具知識:
1
2
3
4
5
6
7
8
9
|
cd wget -c https: //www .percona.com /downloads/XtraBackup/Percona-XtraBackup-2 .2.12 /binary/tarball/percona-xtrabackup-2 .2.12-Linux-x86_64. tar .gz
tar zxf percona-xtrabackup-2.2.12-Linux-x86_64. tar .gz
cd percona-xtrabackup-2.2.12-Linux-x86_64 /bin yum -y install perl perl-Time-HiRes
ln -s /root/percona-xtrabackup-2 .2.12-Linux-x86_64 /bin/innobackupex /usr/bin/innobackupex ln -s /root/percona-xtrabackup-2 .2.12-Linux-x86_64 /bin/xbcrypt /usr/bin/xbcrypt ln -s /root/percona-xtrabackup-2 .2.12-Linux-x86_64 /bin/xbstream /usr/bin/xbstream ln -s /root/percona-xtrabackup-2 .2.12-Linux-x86_64 /bin/xtrabackup /usr/bin/xtrabackup
|
1
|
apt-get -y install percona-xtrabackup
|
操作步驟:
1
2
3
|
egrep `(log-bin|server-id)` /etc/my .cnf
或 grep -E `(log-bin|server-id)` /etc/my .cnf
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# for master apt-get install percona-xtrabackup
mv /etc/mysql/my .cnf /etc/mysql/my .cnf~ || mv /etc/mysql /etc/mysql ~
service mysql status # df -h # du -sh /data/mysql/data # 觀察一下磁碟使用情況,以及/data/mysql/data MySQL資料庫資料目錄的佔用空間的大小,評估將這些檔案scp到從庫伺服器的哪個位置等等 cd /data mkdir -p /data/mysql-master_data # which innobackupex # 為了避免ssh連線丟失,採用nohup執行 nohup /usr/bin/innobackupex --user=root --password=password /data/mysql-master_data &
#上述命令執行成功後會在/data/mysql-master_data目錄下得到一個以時間格式生成的新目錄的名字,如/data/mysql-master_data/2015-11-03_12-39-51 # make sure user privileges on scp target # sshpass - noninteractive ssh password provider apt-get -y install sshpass
# 為了避免ssh連線丟失,可以採用nohup執行 sshpass -ppassword scp -o StrictHostKeyChecking=no -P22 -r /data/mysql-master_data vivo@192.168.100.126: /data rm -rf /data/mysql-master_data
|
1
2
3
4
5
6
7
8
9
|
# for slave #此處參考文章下面的“xtraBackup備份原理剖析”參考瞭解為什麼需要apply-log innobackupex --apply-log /data/mysql-master_data/2015-11-03_12-39-51 #檢視“/data/mysql-master_data/2015-11-03_12-39-51”內的xtrabackup_binlog_info檔案,記錄bin-log filename和pos值,以便切換master。 service mysql stop #清空資料庫資料目錄 rm -rf /data/mysql/data/ *
innobackupex --copy-back /data/mysql-master_data/2015-11-03_12-39-51 chown mysql:mysql -R /data/mysql/data/
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
service mysql start mysql -uroot -ppassword #如果從庫的my.cnf中設定了開啟二進位制日誌,為了程式設計師的某些便利,啟用log_bin_trust_function_creators,進一步瞭解可以參考下方的“MySQL 函式限制”和“MySQL建立方法錯誤:This function has none of DETERMINISTIC, NO SQL” SHOW VARIABLES LIKE `%func%` ;
SET GLOBAL log_bin_trust_function_creators=1; SHOW VARIABLES LIKE `%func%` ;
CHANGE MASTER TO MASTER_HOST= `192.168.100.132` ,MASTER_USER= `root` ,MASTER_PASSWORD= `password` ,MASTER_LOG_FILE= `mysql-bin.000665` ,MASTER_LOG_POS=51145611;
START SLAVE; SHOW SLAVE STATUS G; #注意觀察Slave_IO_Running: Yes和Slave_SQL_Running: Yes,只有都是Yes的時候才表示正確 # 如果原先主庫上配置有event則需要在從庫上停掉,畢竟從庫不是用於做這個(含有寫入操作)的 SHOW VARIABLES LIKE `event_scheduler` ;
SET GLOBAL event_scheduler=0; SHOW VARIABLES LIKE `event_scheduler` ;
QUIT; rm -rf /data/mysql-master_data # end |
附帶,利用innobackupex 工具單機備份資料庫和恢復資料庫的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# backup cd /data mkdir -p /data/mysql-master_data nohup /usr/bin/innobackupex --user=root --password=password /data/mysql-master_data &
ls /data/mysql/data/ -alh
ls /etc/my .cnf -l
# recovery service mysql stop service mysql status innobackupex --apply-log /data/mysql-master_data/2015-11-03_11-21-10/ rm -rf /data/mysql/data/ *
innobackupex --copy-back /data/mysql-master_data/2015-11-03_11-21-10/ chown mysql:mysql -R /data/mysql/data/ service mysql start rm -rf /data/mysql-master_data
|
參考:
相關文章
- MySQL-主從複製之搭建主資料庫MySql資料庫
- MySQL-主從複製之搭建從資料庫MySql資料庫
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- mysql資料庫實現主從複製MySql資料庫
- mysql主從複製搭建MySql
- 資料庫主從複製資料庫
- Linux實現MySql資料庫的主從複製(一主一從)LinuxMySql資料庫
- 簡單搭建MySQL主從複製MySql
- Mysql主從複製原理及搭建MySql
- MySQL(14)---Docker搭建MySQL主從複製(一主一從)MySqlDocker
- MySQL-主從複製之同步主從資料MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- linux下mysql主從複製,實現資料庫同步LinuxMySql資料庫
- mysql 5.7 主從複製搭建及原理MySql
- mysql主從複製的理解和搭建MySql
- docker-compase搭建mysql主從複製DockerMySql
- Mysql 8.4.0 結合 Docker 搭建GTID主從複製,以及傳統主從複製MySqlDocker
- mysql5.7主從複製,主主複製MySql
- mysql複製--主從複製配置MySql
- MySQL 5.7 基於GTID搭建主從複製MySql
- Docker Compose搭建MySQL主從複製叢集DockerMySql
- MySQL主從複製MySql
- MySQL主從複製之GTID複製MySql
- mysql 8.4 主從複製MySql
- mysql--主從複製MySql
- MySQL主從複製原理MySql
- MySQL的主從複製MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL++:Liunx - MySQL 主從複製MySql
- MySQL(13)---MYSQL主從複製原理MySql
- mysql主從複製(一):一主多從MySql
- 基於 Docker 的 MySQL 主從複製搭建(真正弄懂)DockerMySql
- MySQL-18.主從複製MySql
- MySQL主從複製歷程MySql
- Mysql 傳統主從複製MySql
- MySQL8.0主從複製MySql
- Windows Mysql主從複製部署WindowsMySql