Mysql 多主一從數據備份

Mysql 多主一從數據備份

概述

對任何一個數據庫的操做都自動應用到另一個數據庫,始終保持兩個數據庫中的數據一致。mysql

這樣作有以下幾點好處:sql

  1. 能夠作災備,其中一個壞了能夠切換到另外一個。
  2. 能夠作負載均衡,能夠將請求分攤到其中任何一臺上,提升網站吞吐量。 對於異地熱備,尤爲適合災備。




MySQL 主從複製的方式

1 Master 數據庫操做的任何數據庫的時候,都會將操做記錄寫入到biglog日誌文件當中
2 Slave 數據庫經過網絡獲取到主數據庫的日誌文件,寫入本地日誌系統 ,而後一條條的將數據庫事件在數據庫中完成
3 Slave 重作中繼日誌中的事件,將 Master 上的改變反映到它本身的數據庫中,因此兩端的數據是徹底同樣的。

環境

操做系統:CentOS數據庫

MySQL版本:mysql-5.6.26 (主從二者數據庫版本必須保持一致)vim

Master1 配置

1 開啓binlog日誌功能服務器

vim /etc/my.cnf網絡

server-id=6
log-bin=mysql-bin

2 重啓mysql 登錄並受權負載均衡

mysql -uroot -p123456socket

grant replication slave, replication client on *.* to 'repl'@'10.211.55.7' identified by '123456';

ip地址爲slave服務器的ip地址ide

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 就這樣 完成了

相關文章
相關標籤/搜索