社區專欄>CentOS MySQL5.7部署及主從復制配置>
原創
CentOS MySQL5.7部署及主從復制配置
解壓安裝MySQL5.7
- MySQL安裝包下載網址://downloads.mysql.com/archives/community/、//mirrors.huaweicloud.com/mysql/Downloads/MySQL-5.7/
- 下載到目錄/data1/soft/,并解壓到目錄/data1/soft/mysql
cd /data1/soft/
wget //dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
tar -zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.39-linux-glibc2.12-x86_64 mysql
- 創建MySQL用戶組,創建文件和路徑,并且授權(在my.cnf中用到)
mkdir /data1/soft/mysql/run /data1/soft/mysql/logs
touch /data1/soft/mysql/mysql.log
groupadd mysql
useradd -g mysql mysql -d /data1/soft/mysql
chown -R mysql:mysql /data1/soft/mysql
chown mysql:mysql /data1/soft/mysql/mysql.log
- 配置MySQL本地服務
cp -a /data1/soft/mysql/support-files/mysql.server /etc/init.d/mysqld
- 編輯`/etc/my.cnf`文件,設置端口50005,設置默認編碼utf8mb4,內容如下
[mysql]
port=50005
default-character-set=utf8
socket=/data1/soft/mysql/mysql.sock
max_allowed_packet = 500M
[mysqld]
log-bin=/data1/soft/mysql/mysql-bin
binlog_format=ROW
basedir=/data1/soft/mysql
datadir=/data1/soft/mysql/data
socket=/data1/soft/mysql/mysql.sock
symbolic-links=0
port=50001
server-id=1
log-bin=mysql-bin
max_allowed_packet = 500M
max_connections=500
log_bin_trust_function_creators = 1
log_bin=ON
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysqld_safe]
log-error=/data1/soft/mysql/mysql.log
pid-file=/data1/soft/mysql/mysql.pid
!includedir /etc/my.cnf.d
- 創建軟連接
ln -s /data1/soft/mysql/mysql.sock /tmp/mysql.sock
- 初始化數據庫并啟動服務
-
su mysql
/data1/soft/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/data1/soft/mysql/ --datadir=/data1/soft/mysql/data/ --user=mysql --initialize
- 上一步的命令運行結束后,在終端可以看到初始密碼,記錄改初始密碼,在后續步驟修改
- 啟動服務
service mysqld start
- 切換到`root`用戶,在文件/etc/profile末尾添加
PATH=$PATH:/data1/soft/mysql/bin
- 執行以下命令,使環境變量生效
source /etc/profile
- 設置開機自動啟動
-
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
- 執行chkconfig --list命令,如果mysqld的3、4、5狀態為開或者為 on則表示設置開機自動啟動設置成功
- 修改密碼,按回車Enter后,輸入一次初始密碼,再輸入兩次新密碼
mysqladmin -u root -p password
- 登錄mysql
mysql -u root -p
- 檢查數據庫的日志是否開啟,日志格式是否為ROW
-
SHOW VARIABLES LIKE "log_bin"; # 開啟為ON
show variables like 'binlog_format';
主從復制
- 安裝好主庫和從庫后開配置主從備份
- 修改從庫的配置文件/etc/my.cnf,在[mysqld]下增加以下配置,其中server-id用于標識主從數據庫,二者設置不能相同
# Master-slave Replication
server-id=2
#read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
slave-skip-errors=all
# 不進行同步的庫,可按需要修改
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
# 需要進行同步的庫,以db1和db2為例,可按需要修改
replicate-do-db=db1
replicate-do-db=db2
- 在主庫創建一個repl賬號,僅用于主從復制連接
grant replication slave on *.* to 'repl'@'從庫ip' identified by '密碼';
- 修改主庫的my.cnf文件,確保日志功能打開,并設置server-id
server-id=1
log-bin=mysql-bin
binlog_format=ROW
- 登錄MySQL檢查上一步`my.cnf`的修改是否配置成功
SHOW VARIABLES LIKE 'log_bin';
show variables like 'binlog_format';
show variables like 'server_id';
- 在從節點遠程連接主庫,生成master的數據備份mysql.bak.sql,假設要同步的數據庫是db1,db2
mysqldump -u root -p -h 192.168.0.18 -P 3306 --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 --databases db1 db2 > mysql.bak.sql
- -在從節點導入備份文件
mysql -u root -p < mysql.bak.sql
- 在備份文件中查找日志文件備份前的Position值,輸入命令less mysql.bak.sql,查找字符CHANGE,例如找到以下信息,則說明日志偏移量是154
-
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=154;
- 基于上一步信息,登錄從庫的MySQL,執行以下SQL語句
change master to
master_host='192.168.0.18',
master_user='repl',
master_password='主庫repl的密碼',
master_log_file='mysql-bin.000004',
master_port=3306,
master_log_pos=154;
- 在從庫啟動主從,并查看狀態
start slave;
show slave status\G;