mysql主从搭建
Mysql主從搭建
MySQL數據庫自身提供的主從復制功能可以方便的實現數據的多處自動備份,實現數據庫的拓展。多個數據備份不僅可以加強數據的安全性,通過實現讀寫分離還能進一步提升數據庫的負載性能。
實現思路
實現MySQL主從復制需要進行的配置:主服務器: 開啟二進制日志 配置唯一的server-id 獲得master二進制日志文件名及位置(Position) 創建一個用于slave和master通信的用戶賬號從服務器: 配置唯一的server-id 使用master分配的用戶賬號讀取master二進制日志(執行sql語句) 啟用slave服務一、準備工作
1.主從數據庫版本最好一致 2.主從數據庫內數據保持一致 主數據庫:192.168.1.52 /linux 從數據庫:192.168.1.190 /linux二、主數據庫master修改
1.修改mysql配置修改配置文件/etc/mysql/my.cnf,在[mysqld]部分插入如下兩行:[mysqld] log-bin=mysql-bin #開啟二進制日志 server-id=1 #設置server-id2.重啟mysql,創建用于同步的用戶賬號打開mysql會話shell>mysql -hlocalhost -uname -ppassword 創建用戶并授權:用戶:repl密碼:123123grant replication slave on *.* to 'repl'@'192.168.1.52' identified by '123123'; #給用戶repl賦予replication權限和ip密碼 flush privileges; #重新刷新權限 flush tables with read lock; #表的讀鎖死 show master status; #讀數據狀態3.查看master狀態記錄二進制文件名(mysql-bin.000236)和位置(66014): mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000236 | 66014 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.02 sec)三、從服務器slave修改
1.修改mysql配置 同樣修改my.cnf配置文件,添加server-id[mysqld]server-id=2 #設置server-id,必須唯一2.重啟mysql,打開mysql會話,執行同步SQL語句 (需要主服務器主機名,登陸憑據,二進制文件的名稱和位置):mysql> CHANGE MASTER TO-> MASTER_HOST='192.168.1.52',-> MASTER_USER='repl',-> MASTER_PASSWORD='123123',-> MASTER_LOG_FILE='mysql-bin.000236',-> MASTER_LOG_POS=66014; Query OK, 0 rows affected, 2 warnings (0.07 sec)3.啟動slave同步進程:mysql>start slave;4.查看slave狀態:mysql> show slave status\G *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.52Master_User: replMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000236Read_Master_Log_Pos: 106039Relay_Log_File: mysqld-relay-bin.000002Relay_Log_Pos: 40308Relay_Master_Log_File: mysql-bin.000236Slave_IO_Running: YesSlave_SQL_Running: Yes ...當Slave_IO_Running和Slave_SQL_Running都為YES的時候就表示主從同步設置成功了。
接下來就可以進行一些驗證了。比如在主master數據庫的test數據庫的一張表中插入一條數據,在slave的test庫的相同數據表中查看是否有新增的數據即可驗證主從復制功能是否有效;還可以關閉slave(mysql>stop slave;),然后再修改master,看slave是否也相應修改(停止slave后,master的修改不會同步到slave),就可以完成主從復制功能的驗證了。
其他參數
還可以用到的其他相關參數: master開啟二進制日志后默認記錄所有庫所有表的操作, 可以通過配置來指定只記錄指定的數據庫甚至指定的表的操作, 具體在mysql配置文件的[mysqld]可添加修改如下選項:# 不同步哪些數據庫binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema# 只同步哪些數據庫,除此之外,其他不同步binlog-do-db = game問題處理
mysql> show slave status\G.......Relay_Log_File: localhost-relay-bin.000535Relay_Log_Pos: 21795072Relay_Master_Log_File: localhost-bin.000094Slave_IO_Running: YesSlave_SQL_Running: NoReplicate_Do_DB: Replicate_Ignore_DB: ......- 解決辦法一
- 解決辦法二
也有可能跟我一樣,沒有執行鎖表語句(表的讀鎖死)
因為不會執行主從復制前的數據,需要自己手動復制(執行sql導入)
轉載于:https://www.cnblogs.com/irockcode/p/8435871.html
總結
- 上一篇: ThinkPHP---ue编辑器
- 下一篇: linux cmake编译源码,linu