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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql主从复制同步

發布時間:2025/3/21 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主从复制同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主master : 192.168.8.10

  • 開啟二進制日志
  • 配置唯一的server-id
  • 獲得master二進制日志文件名及位置
  • 創建一個用于slave和master通信的用戶賬號

從slave : 192.168.8.11

  • 配置唯一的server-id
  • 使用master分配的用戶賬號讀取master二進制日志
  • 啟用slave服務

1、配置主庫:
1)、授權給從數據庫服務器
mysql>GRANT REPLICATION SLAVE ON *.* to 'slave'@'192.168.8.11' identified by 'b5HMLIWQSdT630Dp';

mysql>FLUSH PRIVILEGES;

## 查看MySQL現在有哪些用戶及對應的IP權限
mysql> select user,host from mysql.user;

2)、修改主庫配置文件,開啟binlog,并設置server-id,每次修改配置文件后都要重啟mysql服務才會生效

在該配置文件[mysqld]下面添加下面內容:

[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = cmdb
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

server-id:master端的ID號;
log-bin:同步的日志路徑及文件名,一定注意這個目錄要是mysql有權限寫入的(我這里是偷懶了,直接放在了下面那個datadir下面);
binlog-do-db:要同步的數據庫名
還可以顯示 設置不同步的數據庫:
binlog-ignore-db = mysql 不同步mysql庫和test庫
binlog-ignore-db = test

3)、查看主服務器當前二進制日志名和偏移量,這個操作的目的是為了在從數據庫啟動后,從這個點開始進行數據的恢復
mysql> show master status;

+-------------------+-----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+-----------+--------------+------------------+-------------------+
| mysqld-bin.000121 | 514780853 | | | |
+-------------------+-----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


2、配置從庫

1)、理所當然也是從配置文件著手,在/etc/my.cnf 添加下面配置:

[mysqld]
server-id=2 ?//必須是唯一的

重啟時報錯:mysqld: unknown variable ‘master-host=

說明mysql不認識這些變量,網上搜羅了一番,原因是mysql5.5+版本主從復制不支持這些變量,需要在從庫上用命令來設置:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
  MASTER_PORT=3306,
  MASTER_USER='slave',
  MASTER_PASSWORD='b5HMLIWQSdT630Dp',
  MASTER_LOG_FILE='mysql-bin.000071',
  MASTER_LOG_POS=120; #后面兩個參數的值與主庫保持一致
MASTER_CONNECT_RETRY=10;

mysql> CHANGE MASTER TO MASTER_HOST='111.230.144.106',
-> MASTER_PORT=3306,
-> MASTER_USER='slave2',
-> MASTER_PASSWORD='b5HMLIWQSdT630Dp',
-> MASTER_LOG_FILE='mysqld-bin.000121',
-> MASTER_LOG_POS=514780853,
-> MASTER_CONNECT_RETRY=10;


2)、啟動slave進程
mysql> start slave;
錯誤error 1872
執行重置
reset slave;
Query OK, 0 rows affected (0.04 sec)

3)、查看slave的狀態,
show slave status;
如果下面兩項值為YES,則表示配置正確:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
從庫正在等待主庫更新數據。。。Waitin for master to send event...


三、同步主庫已有數據到從庫

主庫操作:
1、停止主庫的數據更新操作
mysql>flush tables with read lock;
2、新開終端,生成主數據庫的備份(導出數據庫)
[root@zhoujietest ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql
3、將備份文件傳到從庫
[root@zhoujietest ~]# scp cmdb.sql root@192.168.8.11:/root/
4、主庫解鎖
mysql>unlock tables;

然后在主服務器上查詢當前二進制文件的文件名及偏移位置:

mysql > show master status;

然后停止主服務器上的MySQL服務:

shell> mysqladmin -u root shutdown

從庫操作:
1、停止從庫slave
mysql>slave stop;
2、新建數據庫cmdb
mysql> create database cmdb default charset utf8;
3、導入數據
[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql
4、查看從庫已有該數據庫和數據
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cmdb |
| mysql |
| performance_schema |
| test |
+--------------------+

此時主從庫的數據完全一致,如果對主庫進行增刪改操作,從庫會自動同步進行操作。

轉載于:https://www.cnblogs.com/Christine-ting/p/10481805.html

總結

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

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