Mysql主從備份記錄

master在127.0.0.123上,slave在124上

//第一部分、先配置master
1、安裝
#先刪除默認安裝的 mysql lib 庫。
yum remove mysql*
yum remove mariadb*

#通過 RPM 命令進行安裝
unzip MySQL-5.6.28-1.el6.x86_64.zip
rpm -ivh MySQL-server-5.6.28-1.el6.x86_64.rpm MySQL-devel-5.6.28-1.el6.x86_64.rpm MySQL-client-5.6.28-1.el6.x86_64.rpm

#mysql 初始化
/usr/bin/mysql_install_db
#關閉 mysql 服務
service mysql stop

2、修改配置
vim /etc/my.cnf

[client]
password = 123456
port = 3306
default-character-set=utf8    #client支持中文

[mysqld]
server-id=11 #數據庫唯一ID,主從的標識符不能重複
log-bin = mysql-bin #開啓bin-log,並指定文件目錄和文件名前綴

#下面2個配置不建議做,建議基於整個數據庫來做同步
#binlog-do-db=huanqiu #需要同步的數據庫。如果是多個同步庫,就以此格式另寫幾行即可。如果不指明對某個具體庫同步,就去掉此行,表示同步所有庫(除了ignore忽略的庫)。
#binlog-ignore-db=mysql #不同步mysql系統數據庫。如果是多個不同步庫,就以此格式另寫幾行;也可以在一行,中間逗號隔開。

sync_binlog = 1 #確保binlog日誌寫入後與硬盤同步,效率會有所降低,不過確保每條操作都寫入到硬盤,如果後續出現mysql效率降低的情況,可以嘗試將本值設置爲0,即由操作系統來指定策略同步到硬盤。
binlog_checksum = none #跳過現有的採用checksum的事件,mysql5.6.5以後的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
binlog_format = mixed #bin-log日誌文件格式,設置爲MIXED可以防止主鍵重複。

port = 3306
character_set_server=utf8     #默認中文
character_set_client=utf8
collation-server=utf8_general_ci
lower_case_table_names=1 #忽略大小寫
max_connections = 3000     #支持最大連接數
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_allowed_packet = 10M

[mysql]
default-character-set = utf8   #支持中文

3、啓動mysql
#修改目錄訪問權限
chown -R mysql:mysql /var/lib/mysql

#設置 mysql 訪問權限,請依次敲如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # 安全模式啓動
mysql -uroot   # 無密碼登錄
mysql>   use mysql
mysql> UPDATE user SET Password=PASSWORD(‘123456’) where USER=‘root’; # 設置 root 帳戶的訪問密碼
mysql> FLUSH PRIVILEGES;      # 刷新權限
mysql> quit;

service mysql restart   # 重啓服務
mysql -uroot -p   # 帶密碼登錄
mysql> SET PASSWORD = PASSWORD(‘123456’); # 初次使用,設置密碼
mysql> use mysql
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option; # 允許 root 帳戶進行遠程訪問
mysql> grant replication slave,replication client on . to slave@‘127.0.0.124’ identified by “slave@123”; #配置從庫讀取權限
mysql> FLUSH PRIVILEGES;
mysql> quit;

#啓動服務
service mysql restart

//第二部分、再配置slave
作爲主從配置,slave需要配置read-only
1、同第一部分的配置一樣。
2、修改配置
vim /etc/my.cnf

[client]
password = 123456
port = 3306
default-character-set=utf8    #client支持中文

[mysqld]
server-id=12 #數據庫唯一ID,主從的標識符不能重複
log-bin = mysql-bin #開啓bin-log,並指定文件目錄和文件名前綴

#下面2個配置不建議做,建議基於整個數據庫來做同步
#binlog-do-db=huanqiu #需要同步的數據庫。如果是多個同步庫,就以此格式另寫幾行即可。如果不指明對某個具體庫同步,就去掉此行,表示同步所有庫(除了ignore忽略的庫)。
#binlog-ignore-db=mysql #不同步mysql系統數據庫。如果是多個不同步庫,就以此格式另寫幾行;也可以在一行,中間逗號隔開。

read_only = 1
slave-skip-errors = all #跳過所有的錯誤錯誤,繼續執行復制操作

port = 3306
character_set_server=utf8     #默認中文
character_set_client=utf8
collation-server=utf8_general_ci
lower_case_table_names=1 #忽略大小寫
max_connections = 3000     #支持最大連接數
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
max_allowed_packet = 10M

[mysql]
default-character-set = utf8   #支持中文

3、啓動mysql
#修改目錄訪問權限
chown -R mysql:mysql /var/lib/mysql

#設置 mysql 訪問權限,請依次敲如下命令
mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # 安全模式啓動
mysql -uroot   # 無密碼登錄
mysql>   use mysql
mysql> UPDATE user SET Password=PASSWORD(‘123456’) where USER=‘root’; # 設置 root 帳戶的訪問密碼
mysql> FLUSH PRIVILEGES;      # 刷新權限
mysql> quit;

service mysql restart   # 重啓服務
mysql -uroot -p   # 帶密碼登錄
mysql> SET PASSWORD = PASSWORD(‘123456’); # 初次使用,設置密碼
mysql> use mysql
mysql> grant all privileges on . to ‘root’@’%’ identified by ‘123456’ with grant option; # 允許 root 帳戶進行遠程訪問
mysql> FLUSH PRIVILEGES;
mysql> quit;

#啓動服務
service mysql restart

mysql> stop slave; #執行同步前,要先關閉slave
mysql> change master to master_host=‘127.0.0.123’,master_port = 3306,master_user=‘slave’,master_password=‘slave@123’;

mysql> start slave;
mysql> show slave status \G;

核心:當IO和SQL線程的狀態均爲Yes,則表示主從已實現同步了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

//第三部分、主從全部設置自啓動服務
主和從全部輸入如下命令,重啓也不影響主從之間的同步
chkconfig --add mysql
chkconfig mysql on

//第四部分、如果主從不一致,需要從主中恢復數據到從中,或者一開始主中有數據,設置到從。
1、先鎖定主
mysql> flush tables with read lock; #數據庫只讀鎖定命令,防止導出數據庫的時候有數據寫入。unlock tables命令解除鎖定

在主裏執行
mysqldump -u root --single-transaction --all-databases --master-data=1 > /tmp/master_backup.sql

再傳入到slave節點上,在從裏執行
mysql> stop slave;
mysql> source /tmp/master_backup.sql
mysql> change master to master_host=‘127.0.0.123’,master_port = 3306,master_user=‘slave’,master_password=‘slave@123’;

mysql> start slave;

再將主解鎖
mysql> unlock tables;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章