日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql主从搭建

發布時間:2023/12/13 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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: ......
  • 解決辦法一
Slave_SQL_Running: No 1.程序可能在slave上進行了寫操作 2.也可能是slave機器重起后,事務回滾造成的.一般是事務回滾造成的: 解決辦法:mysql> slave stop; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> slave start;
  • 解決辦法二
首先停掉Slave服務:slave stop 到主服務器上查看主機狀態: 記錄File和Position對應的值 進入master mysql> show master status;然后到slave服務器上執行手動同步: 重新執行change master to語句

也有可能跟我一樣,沒有執行鎖表語句(表的讀鎖死)

因為不會執行主從復制前的數據,需要自己手動復制(執行sql導入)

轉載于:https://www.cnblogs.com/irockcode/p/8435871.html

總結

以上是生活随笔為你收集整理的mysql主从搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。