在實際的生產環境中,為了確保數據庫的穩定性,我們一般會給數據庫配置雙機熱備機制,這樣在master數據庫崩潰后,slave數據庫可以立即切換成主數據庫,通過主從復制的方式將數據從主庫同步至從庫,在業務代碼中編寫代碼實現讀寫分離(讓主數據庫處理 事務性增、改、刪操作,而從數據庫處理查詢操作)來提升數據庫的并發負載能力。

下面我們使用最新版本的Mysql數據庫(8.0.16)結合SpringBoot實現這一完整步驟(一主一從)。
安裝配置mysql
從 https://dev.mysql.com/downloads/mysql/頁面下載mysql安裝包,我這里下載的是mysql8.0.16 Linux-Generic.
準備兩臺虛擬機用作安裝mysql,并將下載后的文件mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz上傳至服務器/app/mysql
192.168.249.131 CENTOS7 主
192.168.249.129 CENTOS7 從
查看防火墻狀態,如果啟動需要先關閉防火墻
service firewalld status ## 查看防火墻狀態service firewalld stop ## 關閉防火墻使用如下命令將xz文件解壓成tar文件xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
解壓安裝包
tar -xvf mysql-8.0.16-linux-gl-ibc2.12-x86_64.tar
在/app/mysql下建立data文件夾,用于存放數據
創建mysql用戶組和mysql用戶
groupadd mysql ## 創建用戶組useradd -g mysql -d /app/mysql mysql ## 在用戶組下創建mysql用戶并授權相關目錄groupdel mysql ## 刪除用戶組名(若報已存在相關用戶組)userdel mysql ## 刪除用戶(若報已存在相關用戶)
初始化安裝mysql數據庫
./mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysqld --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data --initialize2019-07-01T02:05:52.681626Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.2019-07-01T02:05:52.681694Z 0 [System] [MY-013169] [Server] /app/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.16) initializing of server in progress as process 14792019-07-01T02:05:52.681726Z 0 [ERROR] [MY-010338] [Server] Can't find error-message file '/app/mysql/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.2019-07-01T02:05:55.713747Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: xa6(H>rK/r<E2019-07-01T02:05:57.303240Z 0 [System] [MY-013170] [Server] /app/mysql/mysql-8.0.16-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.16) initializing of server has completed
注意,此時mysql會生成一個默認的臨時密碼,如上所示,需要先保存下來然后修改
建立mysql服務并增加執行權限
cp mysql-8.0.16-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysqld
修改mysql配置文件 vi /etc/my.cnf 增加如下配置
[mysqld]port=3306basedir=/app/mysql/mysql-8.0.16-linux-glibc2.12-x86_64datadir=/app/mysql/datasocket=/tmp/mysql.socksymbolic-links=0[mysqld_safe]log-error=/app/mysql/data/log/error.logpid-file=/app/mysql/data/mysql.piduser=mysqltmpdir=/tmpcharacter_set_server=utf8default-storage-engine=INNODBinit_connect='SET NAMES utf8'!includedir /etc/my.cnf.d
新聞熱點
疑難解答