Linux(CentOS) Mysql 8.0.23 安裝(多源安裝)


Linux(CentOS) Mysql 8.0.23 安裝(多源安裝)


安裝命令根據實際部署情況修改調整,CentOS一般選擇通用版本Red Hat Enterprise Linux 7
本文檔使用wget下載,也可以自主下載上傳到服務器,非YUM安裝方式
版本地址:全版本 | Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86, 64-bit)版本
文檔更新記錄:2021/03/15-MySQL Community Server最新版本號:8.0.23


1.0 CentOS7配置阿里雲yum源 ,根據實際情況判斷是否需要配置

1.1 在安裝MySQL之前,需要卸載服務器自帶的MySQL包和MySQL數據庫分支mariadb的包

$ rpm -qa|grep mysql
$ rpm -qa |grep mariadb
mariadb-libs-5.5.65-1.el7.x86_64
$ rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps

1.2 下載(此處下載到/home目錄下)

$ wget -P /home https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.23-el7-x86_64.tar   
#備注:該包下面有3個子包,此文檔主要介紹mysql-8.0.23-el7-x86_64.tar.gz和mysql-router-8.0.23-el7-x86_64.tar.gz  
    1、mysql-8.0.23-el7-x86_64.tar.gz           # MySQL主包,此文檔使用的包  
    2、mysql-router-8.0.23-el7-x86_64.tar.gz    # 用於在應用程序和MySQL服務器之間提供透明路由和負載均衡,從而有效提高MySQL數據庫服務的高可用性與可伸縮行,此處不介紹   
    3、mysql-test-8.0.23-el7-x86_64.tar.gz      # 測試包    

1.3 多實例安裝舉例(此處安裝2個實例,從7001~7002)

$ groupadd mysql
$ useradd -r -g mysql -s /bin/false mysql
$ yum install libaio -y
$ cd /home
$ tar -xf mysql-8.0.23-el7-x86_64.tar 
$ tar -zxvf mysql-8.0.23-el7-x86_64.tar.gz  
$ mv mysql-8.0.23-el7-x86_64 /home/mysql    
$ mkdir -p /home/mysql/data/{7001,7002}  
$ chown -R mysql:mysql /home/mysql  
$ cd /home/mysql    

1.3 多實例安裝舉例(此處安裝2個實例,從7001~7002,已開啟binlog,如果不是用來設置主從的話步長和起始位置設置為1就行,配置7003請忽略,用來做2主1從的配置)

$ vim /etc/my.cnf   

[mysqld]
user=mysql
basedir=/home/mysql
#禁止反解析IP(提高速度)
skip-name-resolve

[mysqld_multi]
mysqld=/home/mysql/bin/mysqld_safe
mysqladmin=/home/mysql/bin/mysqladmin
log=/home/mysql/data/mysqld_multi.log

[mysqld7001]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/home/mysql/data/7001
port=7001
server_id=7001
socket=/tmp/mysql_7001.sock
log_error=/home/mysql/data/error_7001.log

#開啟binlog
log_bin=mysql_bin
binlog_format=ROW
lower_case_table_names=1
log_slave_updates=true
gtid_mode=on
enforce_gtid_consistency=1
#不同步的表(當前_其他)
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_>當前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema

#自增起始位置
auto_increment_offset=1
#自增步長
auto_increment_increment=1

[mysqld7002]
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/home/mysql/data/7002
port=7002
server_id=7002
socket=/tmp/mysql_7002.sock
log_error=/home/mysql/data/error_7002.log

#開啟binlog
log_bin=mysql_bin
binlog_format=ROW
lower_case_table_names=1
log_slave_updates=true
gtid_mode=on
enforce_gtid_consistency=1
#不同步的表(當前_其他)
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#屏蔽同步(其他_>當前)
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema

#自增起始位置
auto_increment_offset=1
#自增步長
auto_increment_increment=1

# [mysqld7003]
# mysqld=mysqld
# mysqladmin=mysqladmin
# datadir=/home/mysql/data/7003
# port=7003
# server_id=7003
# socket=/tmp/mysql_7003.sock
# log_error=/home/mysql/error_7003.log

# #開啟binlog
# log_bin=mysql_bin
# binlog_format=ROW
# lower_case_table_names=1
# log_slave_updates=true
# gtid_mode=on
# enforce_gtid_consistency=1
# #不同步的表(當前_其他)
# binlog_ignore_db=mysql
# binlog_ignore_db=information_schema
# binlog_ignore_db=performance_schema
# #屏蔽同步(其他_>當前)
# replicate_ignore_db=mysql
# replicate_ignore_db=information_schema
# replicate_ignore_db=performance_schema

# #只讀
# read_only=1
# innodb_read_only=1
# #super_read_only=1

1.3 初始化多實例(此處要初始化2個實例,從7001~7002,忽略大小寫一定要在初始化就加入,並記錄下原始密碼!!!記錄下原始密碼!!!記錄下原始密碼!!!,后面改密前登錄使用)

/home/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --lower-case-table-names=1 --basedir=/home/mysql/ --datadir=/home/mysql/data/7001
/home/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --lower-case-table-names=1 --basedir=/home/mysql/ --datadir=/home/mysql/data/7002

1.3 設置環境變量(用於系統識別mysqld_multi、mysqladmin等命令)

$ vim /etc/profile  
export PATH=/home/mysql/bin:$PATH   
$ source /etc/profile   

1.5 使用mysqld_multi啟動單個實例舉例(7001端口),其他端口類似

$ mysqld_multi start 7001

1.6 使用mysqld_multi啟動全部實例

$ mysqld_multi start    

1.7 [推薦] 關閉單個數據庫實例命令(舉例7001)

$ mysqladmin -S /tmp/mysql_7001.sock -p shutdown    
#備注:不推薦使用mysqld_multi關閉多實例,因為麻煩,需要在my.cnf文件的[mysqld_multi]模塊里面配置用戶密碼,並且各個數據庫的用戶密碼都需要相同,否則無法關閉 

1.8 推薦使用socket登錄MySQL(舉例7001)

$ mysql -S /tmp/mysql_7001.sock -p 

1.9 使用mysqld_multi查看實例狀態

$ mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld7001 is running  
MySQL server from group: mysqld7002 is running  

1.10 首次登錄(舉例7001)必須重新設置密碼才能正常使用,此處使用

$ mysql -S /tmp/mysql_7001.sock -p  
# 修改默認root本地密碼並創建遠程連接用戶park
alter user  root@localhost identified by '密碼';
create user 'park'@'%' identified with mysql_native_password by '密碼';
grant all on *.* to 'park'@'%';
# 創建主從同步的用戶backup
create user 'backup'@'%' identified with mysql_native_password by '密碼';
grant replication slave on *.* to 'backup'@'%';

flush privileges;
exit;

1.11 如果是想配置2台服務器互為主從(需要從1.3的步驟改為 將7001配置的自增步長設置為2,自增起始位置設置為1;將7002配置的自增步長設置為2,自增起始位置設置為2,執行初始化)

(7001為從7002為主)
7002上執行:
# 登錄數據庫(獲得binlog當前日志位置)
$ mysql -S /tmp/mysql_7002.sock -p
show master status;
得:
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set                        |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| mysql_bin.000001 |     1650 |              | mysql,information_schema,performance_schema | 4ef1f4e6-7a66-11eb-9cc0-e8611f2b6693:1-6 |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
其中:mysql_bin.000001為master_log_file,1650為master_log_pos

7001上執行:
# 登錄數據庫
$ mysql -S /tmp/mysql_7001.sock -p
change master to master_host='127.0.0.1', master_port=主庫端口此處為7002, master_user='主庫用戶此處為backup', master_password='backup的密碼', master_log_file='此處為mysql-bin.000001', master_log_pos=此處為1650 for channel "通道名稱此處設置為7002-7001";
flush privileges;
# 啟動同步,使用 show slave status\G; 查看 出現兩個IO為YES即可,常用start slave;為停止同步
start slave;

(7002為從7001為主)
7001上執行:
# 登錄數據庫(獲得binlog當前日志位置)
$ mysql -S /tmp/mysql_7001.sock -p
show master status;
得:
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set                        |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
| mysql_bin.000001 |     1888 |              | mysql,information_schema,performance_schema | 4af1d4e6-7a66-11eb-9ca0-e8611g2b6692:1-8 |
+------------------+----------+--------------+---------------------------------------------+------------------------------------------+
其中:mysql_bin.000001為master_log_file,1888為master_log_pos

7002上執行:
# 登錄數據庫
$ mysql -S /tmp/mysql_7002.sock -p
change master to master_host='127.0.0.1', master_port=主庫端口此處為7001, master_user='主庫用戶此處為backup', master_password='backup的密碼', master_log_file='此處為mysql-bin.000001', master_log_pos=此處為1888 for channel "通道名稱此處設置為7001-7002";
flush privileges;
# 啟動同步,使用 show slave status\G; 查看 出現兩個IO為YES即可,常用start slave;為停止同步
start slave;

# 備注:可以2台主一台從配合mysql router用,只要channel名稱不同就可以同時開2個主同步到一個從
備份順序(7001主,7002主,7003從):
7001-->7002
7002-->7001
7001->7003
7002->7003


免責聲明!

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



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