mysql双机数据热备份_如何设置MySql数据同步实现双机热备份
mysql從3.23.15版本以后就提供了數據庫復制功能,利用該功能可實現兩個數據庫以主從模式來同步數據、互相備份的功能。數據庫同步復制功能的設置都在mysql的設置文件中體現。該方案實施的一大基本原則就是作為從數據庫的數據庫版本可以高于主服務器數據庫的版本,但不可以低于主服務器的數據庫版本。
設置主數據庫服務器:
1、查看my.cnf(*unix)或者my.ini(windows)中mysqld配置塊的配置有沒有log-bin(記錄數據庫更改日志),因為mysql的復制機制是基于日志的復制機制,所以主服務器一定要支持更改日志。配置文件中可分別設置需要寫入日志的數據庫和不要寫入日志的數據庫。
server-id=1 //數據庫的id這個應該默認是1就不用改動
log-bin=log_name //日志文件的名稱,這里可以制定日志到別的目錄 如果沒有設置則默認主機名的一個日志名稱
binlog-do-db=db_name //記錄日志的數據庫,多個數據庫用","分割開(下同)
binlog-ignore-db=db_name //不記錄日志的數據庫
然后設置同步數據庫的用戶帳號
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
4.0.2以前的版本, 因為不支持REPLICATION 要使用下面的語句來實現這個功能
mysql> GRANT FILE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
設置好主服務器的配置文件后重新啟動數據庫
2、鎖定現有的數據庫并備份現在的數據
鎖定數據庫
mysql> FLUSH TABLES WITH READ LOCK;
備份數據庫有兩種辦法:一種是直接進入到mysql的data目錄打包需要備份數據庫的文件夾;第二種是使用mysqldump的方式來備份數據庫(要加上"--master-data " 參數)。建議使用第一種方法
3、查看主服務器的狀態
mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
記錄File 和 Position 項目的值,后面要用到。
4、然后把數據庫的鎖定打開
mysql> UNLOCK TABLES;
設置從服務器:
1、設置數據庫的配置文件
server-id=n //設置數據庫id默認主服務器是1可以隨便設置但是如果有多臺從服務器則不能重復。
master-host=db-master.mycompany.com //主服務器的IP地址或者域名
master-port=3306 //主數據庫的端口號
master-user=pertinax //同步數據庫的用戶
master-password=freitag //同步數據庫的密碼
master-connect-retry=60 //如果從服務器發現主服務器斷掉,重新連接的時間差
report-host=db-slave.mycompany.com //報告錯誤的服務器
2、把從主數據庫服務器備份出來的數據庫導入到從服務器中
3、啟動從數據庫服務器,如果啟動的時候沒有加上"--skip-slave-start"這個參數則進入到mysql中執行以下命令:
mysql> slave stop; //停止slave的服務
4、設置主服務器的各種參數
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服務器的IP地址
-> MASTER_USER='replication_user_name', //同步數據庫的用戶
-> MASTER_PASSWORD='replication_password', //同步數據庫的密碼
-> MASTER_LOG_FILE='recorded_log_file_name', //主服務器二進制日志的文件名(前面要求記住的參數)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)
5、啟動同步數據庫的線程
mysql> slave start;
查看主從服務器的狀態mysql> SHOW PROCESSLIST\G //可以查看mysql的進程看看是否有監聽的進程
如果日志太大清除日志的步驟如下
1、鎖定主數據庫
mysql> FLUSH TABLES WITH READ LOCK;
2、停掉從數據庫的slave
mysql> slave stop;
3、查看主數據庫的日志文件名和日志文件的position
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin.001 | 79 | | mysql |
+---------------+----------+--------------+------------------+
4、解開主數據庫的鎖
mysql> unlock tables;
5、更新從數據庫中主數據庫的信息
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服務器的IP地址
-> MASTER_USER='replication_user_name', //同步數據庫的用戶
-> MASTER_PASSWORD='replication_password', //同步數據庫的密碼
-> MASTER_LOG_FILE='recorded_log_file_name', //主服務器二進制日志的文件名(前面要求記住的參數)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的開始位置(前面要求記住的參數)
6、啟動從數據庫的slave
mysql> slave start;
總結
以上是生活随笔為你收集整理的mysql双机数据热备份_如何设置MySql数据同步实现双机热备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python语法错误常见原因_pytho
- 下一篇: python3.7扩展库是什么_Pyth