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;
