MySQL 主從復(fù)制

進(jìn)入 mysql 創(chuàng)建用戶

CREATE USER 'slave'@'%' IDENTIFIED BY 'flzx3qc1001'

查看用戶信息

select * from mysql.user where user='slave' \G

設(shè)置權(quán)限

GRANT SELECT,REPLICATION SLAVE ON *.* TO 'slave'@'%'; 

查權(quán)限是否設(shè)置成功

select * from mysql.user where user='slave' \G

復(fù)制兩個(gè)虛擬機(jī)

因?yàn)槲沂窃谔摂M機(jī)操作 所以只要復(fù)制就可以

同源策略,將主庫的庫文件復(fù)制到從庫

注意,先要停止Mysql服務(wù),主庫從庫都要停止。

service mysql stop

庫位置/var/lib/mysql,mysql文件夾就是這個(gè)所有的庫,需要把這個(gè)文件夾復(fù)制到從庫?,F(xiàn)將這個(gè)文件進(jìn)行壓縮。

tar -zcvf mysql.tar.gz ./mysql/

首先進(jìn)入從庫,查看從庫是否有了這個(gè)壓縮文件,并進(jìn)行移動到從庫的/var/lib/

cd /tmp/
mv mysql.tar.gz /var/lib/

將從庫mysql文件夾進(jìn)行備份,以防失敗。

cd /var/lib/
mv mysql mysql.bak

將主庫傳過來的mysql.tar.gz 解壓,這就完成了同源策略

tar -zxvf mysql.tar.gz

這時(shí),就可以主從就都可以開啟mysql服務(wù)了。

service mysql start

配置主庫和從庫

主庫配置/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] 
server-id               = 1  
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
binlog-ignore-db=mysql   //不進(jìn)行主從復(fù)制的庫
# 將bind-address注釋,為了能夠使用從庫服務(wù)器IP登陸主庫
#bind-address           = 127.0.0.1

從庫配置/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] 
server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
binlog-ignore-db=mysql

修改完后重啟數(shù)據(jù)庫

service mysql restart

查詢主數(shù)據(jù)庫狀態(tài)

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      154 |              | mysql            |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

** 如果為空說明 數(shù)據(jù)庫沒重啟。。 **

從庫執(zhí)行命令

CHANGE MASTER TO 
    MASTER_HOST='192.168.20.14',
    MASTER_USER='slave', 
    MASTER_PASSWORD='flzx3qc1001',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;

//CHANGE MASTER TO MASTER_HOST='192.168.20.14', MASTER_USER='slave', MASTER_PASSWORD='flzx3qc1001', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;

參數(shù)解析

MASTER_HOST:主服務(wù)器IP
MASTER_USER:在主服務(wù)器中創(chuàng)建的帳號,slave
MASTER_PASSWORD:自己定義的密碼,    flzx3qc1001
MASTER_LOG_FILE:上一步查看的 主服務(wù)器的FILE文件,mysql-bin.000001
MASTER_LOG_POS:上一步查看的    主服務(wù)器的Postion位置,筆者是154

開始同步 從服務(wù)器執(zhí)行

START SLAVE;

停止復(fù)制

STOP SLAVE;

查看狀態(tài)

SHOW SLAVE STATUS \G

發(fā)現(xiàn)有一個(gè)錯誤

Last_IO_Errno: 1593
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

意思是 主的UUID 和 從的UUID 不可以一樣, 就是復(fù)制虛擬機(jī)的原因。。。

刪除 從服務(wù)器的 UUID配置

文件地址 /var/lib/mysql/auto.cnf

# 切換目錄
cd /var/lib/mysql

# 重命名
mv auto.cnf auto.cnf.back

# 重啟服務(wù)
service mysql restart

# 進(jìn)入mysql 后 查看狀態(tài)
SHOW SLAVE STATUS \G

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容