Mysql 多主一從資料備份
阿新 • • 發佈:2018-12-10
Mysql 多主一從資料備份
概述
對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個資料庫中的資料一致。
這樣做有如下幾點好處:
- 可以做災備,其中一個壞了可以切換到另一個。
- 可以做負載均衡,可以將請求分攤到其中任何一臺上,提高網站吞吐量。 對於異地熱備,尤其適合災備。
MySQL 主從複製的方式
1 Master 資料庫操作的任何資料庫的時候,都會將操作記錄寫入到biglog日誌檔案當中 2 Slave 資料庫通過網路獲取到主資料庫的日誌檔案,寫入本地日誌系統 ,然後一條條的將資料庫事件在資料庫中完成 3 Slave 重做中繼日誌中的事件,將 Master 上的改變反映到它自己的資料庫中,所以兩端的資料是完全一樣的。
環境
作業系統:CentOS
MySQL版本:mysql-5.6.26 (主從兩者資料庫版本必須保持一致)
Master1 配置
1 開啟binlog日誌功能
vim /etc/my.cnf
server-id=6
log-bin=mysql-bin
2 重啟mysql 登陸並授權
mysql -uroot -p123456
grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';
ip地址為slave伺服器的ip地址
3 檢視日誌狀態
show master status;
Master2 配置
1 開啟binlog日誌功能
vim /etc/my.cnf
server-id=8
log-bin=mysql-bin
2 重啟mysql 登陸並授權
mysql -uroot -p123456
grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';
ip地址為slave伺服器的ip地址
3 檢視日誌狀態
show master status;
Slave 配置
1 修改配置檔案 (注意 slave的預設資料庫啟動的埠必須關閉 service mysql stop)
vim /etc/my.cnf
[mysqld]
binlog-ignore-db=mysql
binlog_format=mixed
expire_logs_days=7
slave_skip_errors=1062
relay_log=mysql-relay-bin
log_slave_updates=1
[mysqld_muliti]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
user=root
password=123456
[mysqld6]
port=3306
datadir=/home/mysql/data6
pid-file=/home/mysql/data6/mysql.pid
socket=/home/mysql/data6/mysql.sock
user=mysql
server-id=7
[mysqld8]
port=3307
datadir=/home/mysql/data8
pid-file=/home/mysql/data8/mysql.pid
socket=/home/mysql/data8/mysql.sock
user=mysql
server-id=7
2 初始化生成目錄
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data6 &
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data8 &
3 修改目錄許可權
chown -R mysql /home/mysql/data6
chown -R mysql /home/mysql/data8
4 啟動服務
mysqld_multi --defaults-file=/etc/my.cnf start 6
mysqld_multi --defaults-file=/etc/my.cnf start 8
5 登入測試(並分別做授權)
mysql -P 3306 -S /home/mysql/data6/mysql.sock
mysql> change master to master_host='10.211.55.6', master_user='repl', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=120;
mysql> start slave;
mysql -P 3307 -S /home/mysql/data8/mysql.sock
mysql> change master to master_host='10.211.55.8', master_user='repl', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=120;
mysql> start slave;
ok 就這樣 完成了