Mysql雙機主從搭建 一、規劃說明 主節點: IP:192.168.1.146 系統:Centos7.6 版本:MySQL-5.7.38 mysql賬戶密碼:root/Admin_2022 同步賬戶:mysync/Admin_2022 主機名:m1 已關閉防火牆,配置阿裡源,連接互聯網 從節點: ...
Mysql雙機主從搭建
一、規劃說明
主節點:
IP:192.168.1.146
系統:Centos7.6
版本:MySQL-5.7.38
mysql賬戶密碼:root/Admin_2022
同步賬戶:mysync/Admin_2022
主機名:m1
已關閉防火牆,配置阿裡源,連接互聯網
從節點:
IP:192.168.1.147
系統:Centos7.6
版本:MySQL-5.7.38
mysql賬戶密碼:root/Admin_2022
同步賬戶:mysync/Admin_2022
主機名:m2
已關閉防火牆,配置阿裡源,連接互聯網
MySQL下載地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
二、主節點安裝MySQL
1、下載MySQL和安裝
下載安裝包到home下 wget -P /home https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar ls /home/ 卸載mariadb rpm -qa | grep mariadb rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps 安裝MySQL cd /home/ yum install ./*.rpm
2、啟動MySQL,設置root密碼,允許遠程登錄
#啟動並設置開機自啟 systemctl start mysqld systemctl enable mysqld systemctl status mysqld #查看版本 mysql --version mysql Ver 14.14 Distrib 5.7.38, for Linux (x86_64) using EditLine wrapper #查看初始root密碼,並重新設置 grep 'temporary password' /var/log/mysqld.log 2022-10-11T03:24:23.926690Z 1 [Note] A temporary password is generated for root@localhost: +ejyY)mTH0di #初始密碼:+ejyY)mTH0di +ejyY)mTH0di #登錄mysql,並重新設置root密碼 mysql -u root -p #設置root密碼是Admin_2022 mysql> set password for root@localhost = password('Admin_2022');
#查看當前資料庫 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) #設置允許遠程 mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user,host from user; mysql> update user set host="%" where user="root"; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
三、副節點安裝MySQL
參考主節點
四、主節點配置
1、配置my.cnf,修改預設存儲目錄為指定目錄/data/下
查看配置文件 cat /etc/my.cnf 停止MySQL服務,拷貝文件到新建/data/下 systemctl status mysqld systemctl stop mysqld mkdir /data/ cp -arp /var/lib/mysql /data/ mv /var/lib/mysql /var/lib/mysqlbak 修改配置文件 vim /etc/my.cnf datadir=/data/mysql socket=/data/mysql/mysql.sock 重啟MySQL systemctl restart mysqld systemctl status mysqld
2、配置my.cnf,指定server-id和開啟binlog
cat >>/etc/my.cnf<<EOF server-id = 1 log-bin = mysql-bin #主從服務的核心 定義binblog日誌的首碼名 #binlog-do-db=test #需要同步的資料庫,如果沒有本行,即表示同步所有的資料庫 #binlog-do-db=mydb #需要同步的資料庫,同時同步test、mydb庫 binlog-ignore-db=mysql #被忽略的資料庫 EOF 生效需要重啟MySQL,等會後面再重啟
3、創建一個同步用戶,用於同步工作
連接資料庫,執行創建用戶sql
# GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY '12345678';
- *.* 指定能操作所有的表和庫;
- mysync表示在系統中創建一個用戶,用於負責主從工作;
- %表示允許所有主機,
- 後面跟具體的ip(192.168.1.147),表示針對某一個主機用來做從伺服器
mysql -u root -p mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.1.147' IDENTIFIED BY '12345678'; mysql> flush privileges;
4、查詢顯示主伺服器狀態
重啟一下服務,生效my.cnf配置
systemctl restart mysqld
查詢下當前狀態
mysql> show master status;
五、從節點配置
1、配置my.cnf,修改預設存儲目錄為指定目錄/data/下
查看配置文件 cat /etc/my.cnf 停止MySQL服務,拷貝文件到新建/data/下 systemctl status mysqld systemctl stop mysqld mkdir /data/ cp -arp /var/lib/mysql /data/ mv /var/lib/mysql /var/lib/mysqlbak 修改配置文件 vim /etc/my.cnf datadir=/data/mysql socket=/data/mysql/mysql.sock 重啟MySQL systemctl restart mysqld systemctl status mysqld
2、配置my.cnf,指定server-id和開啟binlog
cat >>/etc/my.cnf<<EOF server-id = 2 log-bin = mysql-bin #主從服務的核心 定義binblog日誌的首碼名 #binlog-do-db=test #需要同步的資料庫,如果沒有本行,即表示同步所有的資料庫 #binlog-do-db=mydb #需要同步的資料庫,同時同步test、mydb庫 binlog-ignore-db=mysql #被忽略的資料庫 EOF 生效需要重啟MySQL,等會後面再重啟
3、創建一個同步用戶,用於同步工作
mysql -u root -p mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.1.146' IDENTIFIED BY '12345678'; mysql> flush privileges;
4、設置從服務
填入剛纔再master查詢的狀態信息
File:mysql-bin.000001
Position:154
- MASTER_HOST='192.168.1.146', #主伺服器的IP
- MASTER_USER='mysync', #剛纔創建同步的用戶名
- MASTER_PASSWORD='Admin_2022', #剛纔創建同步的密碼
- MASTER_LOG_FILE='mysql-bin.000001', #日誌名稱
- MASTER_LOG_POS=154; #信息位置
重啟MySQL systemctl restart mysqld systemctl status mysqld 配置服務 mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.146',MASTER_USER='mysync',MASTER_PASSWORD='Admin_2022',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154; 開啟服務 mysql> start slave; mysql> show slave status;
六、新建資料庫測試
上面bin-log設置的是預設同步所有資料庫,除了MySQL庫。
做一個測試,在主節點新建一個subsea的測試庫,看是否會同步在從節點上。
- 在主節點創建一個資料庫,導入一個sql,創建一些表
- 主節點查詢matser狀態,發現position數值已經變了
mysql> show master status;
- 從節點查詢資料庫是否增加,已經多了subsea庫
- 從節點查詢slave狀態,成功同步
mysql> show slave status;
七、補充說明
1、啟動順序
先啟動主伺服器MySQL:systemctl start mysqld
然後啟動從伺服器MySQL:systemctl start mysqld
進入從伺服器開啟從服務:mysql> start slave;
2、停止順序
先關閉從伺服器的同步:mysql> slave stop;
然後停止從伺服器MySQL:systemctl stop mysqld
然後停止主伺服器MySQL:systemctl stop mysqld
3、存儲目錄
MySQL存儲目錄:中間改了目錄,後續資料庫也會存儲再這
/data/mysql
預設配置文件my.cnf:
/etc/my.cnf
log-bin也再/data/mysql下:
/data/mysql/mysql-bin.000001
/data/mysql/mysql-bin.index
日誌查看:
/var/log/mysqld.log
systemctl status mysqld
journalctl -xu mysqld
其他一些補充配置
https://blog.csdn.net/justlpf/article/details/82908740
作者: 博客園-李宗盛 出處: https://home.cnblogs.com/u/subsea/ 博客園主頁:https://www.cnblogs.com/subsea/ CSDN主頁:https://blog.csdn.net/SUBSEA123/