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/轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/514159.html
標籤:MySQL
上一篇:MySQL中dd::columns表結構轉table程序以及應用
下一篇:告訴你個廣告業務存盤神器
