CenOS7 安裝MySQL8.0主從架構


1. 卸載之前安裝的

rpm -qa|grep mysql
service mysqld status
service mysqld stop
rpm -ev [需要移除組件的名稱]

2. 安裝mysql

cd /usr/local
mkdir mysql
cd mysql
wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm yum install mysql-community-server --nogpgcheck

3. 啟動服務

systemctl list-unit-files|grep mysqld
mysqld --initialize
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
systemctl enable mysqld
grep
'temporary password' /var/log/mysqld.log #查看密碼

4. 修改權限

mysql -uroot -p密碼
alter user  user() identified by 'Cxf_19960921';
use mysql;
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password.policy = LOW;
set global validate_password.length = 6;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;

5. 主從架構搭建

   在之前單機環境的基礎上搭建一主一從mysql8.0架構 主服務器ip:47.103.10.99  從服務器:124.221.246.23。

5.1 修改配置文件

#主服務器
vim /etc/my.cnf
[mysqld]
server-id = 1 #復制集群中的各節點的id均必須唯一
log-bin = master-log #開啟二進制日志
relay-log = relay-log #開啟中繼日志
skip_name_resolve #關閉名稱解析(非必須)
# 保存后重啟 :wq
systemctl restart mysqld

#從服務器
vim /etc/my.cnf
[mysqld]
server-id = 2 #復制集群中的各節點的id均必須唯一;
relay-log = relay-log #開啟中繼日志
log-bin = master-log #開啟二進制日志
read_only = ON #啟用只讀屬性
relay_log_purge = 0 #是否自動清空不再需要中繼日志
skip_name_resolve #關閉名稱解析(非必須)
log_slave_updates = 1 #使得更新的數據寫進二進制日志中
# 保存后重啟:wq
systemctl restart mysqld

5.2 建立主從聯系

 使用navicat連接兩個服務器后做以下操作。

#主服務器 創建一個repl用戶專門用來做主從同步 IP為從服務器
CREATE USER 'repl'@'124.221.246.23' IDENTIFIED WITH mysql_native_password BY 'Cxf_123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'124.221.246.23';
flush privileges;   show master status;

#從服務器 master_host為主服務地址 master_log_file,master_log_pos為主服務中查詢出結果
change master to 
master_host='47.103.10.99',
master_port=3306,
master_user='repl',
master_password='Cxf_123456',
master_log_file='master-log.000002',
master_log_pos=1244;
reset slave;
start slave;
show slave status;

 從上圖中可看出Slave_IO_Statue為Waiting for source to send event,Slave_IO_Running為yes,Slave_SQL_Running即為配置成功。

5.3 驗證主從同步

  在主服務器創建一個數據庫,如果在從服務器也出現該庫說明同步成功。

create DATABASE sync_demo;

 5.4 全庫同步與部分同步

  之前介紹的同步為全庫同步,而實際環境中,一般並不需要針對全庫做備份,而只需要對一些特別重要的庫或者表來進行同步。

#主庫
vim /etc/my.cnf binlog
-do-db=masterdemo #需要同步的二進制數據庫名 expire-logs-days = 7 #只保留7天的二進制日志,以防磁盤被日志占滿(可選) #不備份的數據庫 binlog-ignore-db=information_schema binlog-ignore-db=performation_schema binlog-ignore-db=sys
# 保存后重啟 :wq
systemctl restart mysqld

#從庫
vim /etc/my.cnf replicate
-do-db = masterdemo #如果salve庫名稱與master庫名相同,使用本配置
#如果master庫名[mastdemo]與salve庫名[mastdemo01]不同,使用以下配置[需要做映射]
replicate-rewrite-db = masterdemo -> masterdemo01 #如果不是要全部同步[默認全部同步],則指定需要同步的表
replicate-wild-do-table=masterdemo01.t_dict
replicate-wild-do-table=masterdemo01.t_num
# 保存后重啟 :wq
systemctl restart mysqld

 5.5 搭建半同步復制集群

  半同步復制包含在mysql安裝目錄下的lib/plugin目錄下的 semisync_master.so和semisync_slave.so兩個文件中。需要在主服務上安裝 semisync_master模塊,在從服務上安裝semisync_slave模塊。

#主服務(需要登錄成功)
install plugin rpl_semi_sync_master soname 'semisync_master.so';
show global variables like 'rpl_semi%';
set global rpl_semi_sync_master_enabled=ON;


#從服務(需要登錄成功)
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
show global variables like 'rpl_semi%';
set global rpl_semi_sync_slave_enabled = on;
show global variables like 'rpl_semi%';
stop slave;
start slave;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM