mysql8 主主負(fù)載配置

一、CentOS7下安裝mysql8

1.1 安裝前清理工作
rpm -pa | grep mysql

查找出安裝的mysql相關(guān)軟件包依賴包,

yum remove mysql-xxx-xxx-

刪除找到的軟件依賴包

find / -name mysql

查找mysql相關(guān)目錄,

rm -rf /var/lib/mysql

刪除目錄

1.2 安裝mysql8

1.2.1 先去官網(wǎng)下載mysql的repo源并安裝,
mysql repo下載地址

mysql repo 下載地址

1.2.2 下載好的mysql repo文件上傳到Centos,安裝 yum repo文件并更新 yum 緩存

  rpm -ivh mysql80-community-release-el7-3.noarch.rpm

執(zhí)行后在 /etc/yum.repos.d/ 目錄下生成兩個repo文件


repo文件

更新 yum 命令

yum clean all
yum makecache

1.2.3 使用 yum安裝mysql

yum install mysql-community-server

安裝mysql

1.2.4 配置my.cnf

lower_case_table_names = 1 #是否大小寫敏感,1為非大小寫敏感,默認(rèn)0大小寫敏感,mysql8在第一次啟動就要配置好,后面更改了就會報錯

mysql8 中大小寫敏感配置要在第一次啟動前配置好

systemctl start mysqld.service

啟動mysql

1.2.5 修改初始密碼

cat /var/log/mysqld.log | grep password

找到默認(rèn)密碼

mysql -u root -p

使用默認(rèn)密碼登錄

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

修改初始密碼

SHOW GRANTS FOR `root`;  -- 查看用戶權(quán)限 
CREATE USER `root`@`%` IDENTIFIED BY '1qaz@WSX';  -- 創(chuàng)建用戶 
GRANT ALL ON *.* TO `root`@`%` WITH GRANT OPTION;-- 修改用戶權(quán)限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1qaz@WSX'; --  修改用戶密碼校驗方式

以上可能會用到的用戶權(quán)限相關(guān)sql

3. mysql主主負(fù)載

3.1 部署好兩臺相同的mysql服務(wù)
假設(shè)
服務(wù)器A:192.168.1.1
服務(wù)器B:192.168.1.2

CREATE USER 'sync'@'192.168.1.2' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.1.2';

在服務(wù)器A上創(chuàng)建同步賬號,并添加權(quán)限

CREATE USER 'sync'@'192.168.1.1' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.1.1';

在服務(wù)器B上創(chuàng)建同步賬號,并添加權(quán)限

3.2 配置my.cnf

[mysqld]
user                            = mysql #mysql使用的用戶名
bind_address                    = 0.0.0.0 #監(jiān)聽IP,此處不能用127.0.0.1因為需要外部機(jī)器訪問
default_authentication_plugin   = mysql_native_password
server-id = 2 #server-id,必須是大于0的一個整數(shù),兩臺服務(wù)器不能設(shè)置一樣,一般一個設(shè)1,另一個設(shè)2就可以
log_bin                         = mysql-bin #二進(jìn)制日志名,最終會在/usr/local/mysql/data/中以mysql-bin.000001這種文件名形式存在,擴(kuò)展名是一個編號
binlog_format                   = mixed #混合型日志格式,具體含義可自行查詢
binlog_expire_logs_seconds      = 604800 #日志過期時間
sync-binlog                     = 1
innodb_flush_log_at_trx_commit  = 1

# Master DB #
#需要同步的數(shù)據(jù)庫用多個binlog-do-db,不要寫在一行用逗號分隔,這種情況可能會導(dǎo)致數(shù)據(jù)庫同步狀態(tài)一切正常,就是同步不了,日志也沒有任何問題,根據(jù)實驗發(fā)現(xiàn),如果寫成binlog-do-db = database1,database2
在使用show master status以及show slave status時與下面設(shè)置方式完全一樣,但就是無法同步
binlog-do-db                    = sjy  #需要同步的數(shù)據(jù)庫
binlog-do-db                    = sjy_test  #需要同步的數(shù)據(jù)庫
#由于兩個服務(wù)器都可以寫數(shù)據(jù),為了防止自增的key沖突,需要設(shè)置下面兩個,increment是每次增長數(shù),兩臺服務(wù)器設(shè)為2即可,offset是起始偏移,一個服務(wù)器設(shè)置為1,另一個設(shè)置為2,這樣自增id在服務(wù)器A上是1、3、5這樣,在服務(wù)器B上就是2、4、6不會產(chǎn)生沖突
auto-increment-increment        = 2
auto-increment-offset           = 2

# Slave DB #
replicate-do-db                 = sjy  #需要從其他服務(wù)器同步過來的數(shù)據(jù)庫名
replicate-do-db                 = sjy_test
relay_log                       = relay-bin #中繼日志名稱
  
lower_case_table_names = 1 #是否大小寫敏感,1為非大小寫敏感,默認(rèn)0大小寫敏感,mysql8在第一次啟動就要配置好,后面更改了就會報錯

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

server-id 兩臺服務(wù)器設(shè)置不同的值,一個設(shè)置1,一個設(shè)置2
auto-increment-increment 主鍵增長數(shù),兩臺設(shè)置相同值
auto-increment-offset 偏移量設(shè)置不同值,一個設(shè)置1,一個設(shè)置2

3.3 配置主從服務(wù)信息,開啟服務(wù)
服務(wù)器A為主服務(wù)時中執(zhí)行

SHOW MASTER STATUS\G

查看主服務(wù)信息

*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 2165741
     Binlog_Do_DB: sjy,sjy_test
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

記下File和Position值,在B服務(wù)器上設(shè)置,

CHANGE MASTER TO MASTER_HOST='192.168.100.1',MASTER_USER='sync',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=2165741;

MASTER_HOST 主服務(wù)器IP,即為對方服務(wù)器IP
MASTER_USER 我們創(chuàng)建的同步用戶
MASTER_PASSWORD 用戶密碼
MASTER_LOG_FILE 主服務(wù)器上查到的日志文件名
MASTER_LOG_POS 主服務(wù)器上查到的日志位置

同理,在服務(wù)器B上執(zhí)行SHOW MASTER STATUS,把信息配置到服務(wù)器A上。

start slave;

兩個服務(wù)器分別執(zhí)行,開啟slave。

3.4 檢驗開啟狀態(tài)

show slave status\G

分別在兩臺服務(wù)器上執(zhí)行,查看 Slave_IO_Running 和 Slave_SQL_Running 這兩個值是否都為YES;
在服務(wù)器A中修改數(shù)據(jù),數(shù)據(jù)庫B是否數(shù)據(jù)一致,在數(shù)據(jù)庫B中修改數(shù)據(jù),數(shù)據(jù)庫A中是否數(shù)據(jù)一致。

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

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

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