久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > 搭建MySQL主從

搭建MySQL主從

發布人:天翼云開發者 時間:2025-08-21 來源:工程師 發布文章

本文分享自天翼云開發者社區《搭建MySQL主從》,作者:2****m

—— 本文基于MySQL 5.7.36進行演示1、下載MySQL安裝包

官網網址:https://downloads.mysql.com/archives/community

2、解壓MySQL安裝包

將以下包上傳至服務器:

mysql-community-common-5.7.43-1.el7.x86_64.rpm

mysql-community-libs-5.7.43-1.el7.x86_64.rpm

mysql-community-client-5.7.43-1.el7.x86_64.rpm

mysql-community-server-5.7.43-1.el7.x86_64.rpm

mysql-community-libs-compat-5.7.43-1.el7.x86_64.rpm

mysql-community-devel-5.7.43-1.el7.x86_64.rpm

3、安裝MySQL1)安裝net-tools
yum install net-tools -y
2)刪除MySQL和mariadb
rpm -qa | grep mysql | xargs rpm -e --nodeps

rpm -qa | grep mariadb| xargs rpm -e --nodeps
3)按順序執行以下命令:
rpm -ivh  mysql-community-common-5.7.43-1.el7.x86_64.rpmrpm -ivh  mysql-community-libs-5.7.43-1.el7.x86_64.rpmrpm -ivh  mysql-community-client-5.7.43-1.el7.x86_64.rpmrpm -ivh  mysql-community-server-5.7.43-1.el7.x86_64.rpmrpm -ivh  mysql-community-libs-compat-5.7.43-1.el7.x86_64.rpmrpm -ivh  mysql-community-devel-5.7.43-1.el7.x86_64.rpm
4)命令成功執行后,則安裝成功4、修改my.cnf文件
# 修改my.cnf文件:vim /etc/my.cnf# 配置內容如下:[mysqld]port=9001max_connections=1000max_connect_errors=10character-set-server=UTF8MB4default-storage-engine=INNODBdefault_authentication_plugin=mysql_native_password
server-id = 20001 #主從節點的server-id不同log-bin=mysql-binauto_increment_offset=1auto_increment_increment=2sync_binlog=1innodb_flush_log_at_trx_commit=1binlog_format=MIXEDlog-slave-updates=trueopen_files_limit=655350sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'datadir=/data/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
5、初始化MySQL密碼1)啟動mysqld服務
systemctl start mysqld
2)查看MySQL初始密碼
cat /var/log/mysqld.log | grep localhost
6、MySQL權限控制1)登錄MySQL客戶端
sudo mysql -uroot -p;
2)修改密碼
# 生產環境必須設置強密碼?。。LTER USER "root"@"localhost" IDENTIFIED BY "密碼";

flush privileges;
3)切換數據庫
use mysql;
4)設置允許遠程訪問
UPDATE user SET host = '%' WHERE user = 'root';

flush privileges; 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; 

flush privileges;
5)新建戶mysql用戶(用于建立主從狀態)
# 生產環境必須設置強密碼?。?!CREATE USER 'mysql'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' WITH GRANT OPTION;

flush privileges;
7、配置主從(在從庫執行以下命令)1)登錄MySQL客戶端
sudo mysql -umysql -p;
2)切換至mysql數據庫,并建立主從連接
use mysql;# 生產環境必須設置強密碼?。?!# MASTER_LOG_FILE和MASTER_LOG_POS可在master節點通過 show master status 命令查看。CHANGE MASTER TOMASTER_HOST = '主節點ip',
MASTER_USER = 'mysql',
MASTER_PASSWORD = '密碼',
MASTER_PORT = 9001,MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=528,
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000;
3)啟動slave
start slave;
4)查看主從狀態
# 如果輸出結果中Slave_IO_Running和Slave_SQL_Running值都為YES,則主從狀態正常show slave status;
8、安裝數據同步工具-percona
# 上傳libev-4.15-7.el7.x86_64.rpm安裝包# 下載路徑:http://rpmfind.net/linux/rpm2html/search.php?query=libev.so.4%28%29%2864bit%29&submit=Search+...&system=&arch=cd /usr/local/app_isntall# 安裝libevrpm -ivh libev-4.15-7.el7.x86_64.rpm# 安裝perconayum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm# 安裝percona-xtrabackup-24yum install -y percona-xtrabackup-24
9、數據同步1)數據備份

主節點數據備份

以下操作在主節點上執行

# 創建數據備份目錄mkdir -p /data/mysql_master_bak# 創建備份用戶CREATE USER 'mysql_bak'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
GRANT ALL PRIVILEGES ON *.* TO 'mysql_bak'@'%' WITH GRANT OPTION;
flush privileges; 

# 數據備份innobackupex --defaults-file=/etc/my.cnf --user=mysql_bak --password='密碼'  --compress --parallel=20 --throttle=20 --rsync /data/mysql_master_bak 2>/data/mysql_master_bak/error.log# 數據驗證,查看是否有報錯cat /data/mysql_master_bak/error.log# error.log日志中有記錄MASTER_LOG_FILE和MASTER_LOG_POS的值。230822 10:34:48 Backup created in directory '/data/mysql_master_bak/2023-08-22_10-34-47/'MySQL binlog position: filename 'mysql-bin.000002', position '16007'230822 10:34:48 [00] Compressing /data/mysql_master_bak/2023-08-22_10-34-47/backup-my.cnf.qp
230822 10:34:48 [00]        ...done230822 10:34:48 [00] Compressing /data/mysql_master_bak/2023-08-22_10-34-47/xtrabackup_info.qp
230822 10:34:48 [00]        ...donextrabackup: Transaction log of lsn (2797339) to (2797348) was copied.
230822 10:34:50 completed OK!# 主庫數據同步至備機nohup rsync -e ssh -avr /data/mysql_master_bak/xxx/ 從節點ip:/data/mysql_slave_bak/xxx# 數據驗證,查看是否有報錯cat nohup.out

從節點數據備份

以下操作在從節點上執行

# 創建數據備份目錄mkdir -p /data/mysql_slave_bak
2)數據加載

從節點數據備份

以下操作在從節點上執行

# 安裝qpressyum install qpress -y# 解壓縮nohup innobackupex --decompress --parallel=20 /data/mysql_slave_bak/xxx &# 數據恢復innobackupex --apply-log /data/mysql_slave_bak/xxx# 停止slavestop slave;# 停止mysqlsystemctl stop mysqld# 原始目錄備份mv /data/mysql /data/mysql_bak# 數據源切換mv /data/mysql_slave_bak/xxx /data/mysql# 給數據源賦權chown -R mysql:mysql /data/mysql
3)數據同步

從節點數據備份

以下操作在從節點上執行

# 啟動mysqlsystemctl start mysqld# 恢復主從狀態mysql -umysql -p

CHANGE MASTER TOMASTER_HOST = '主節點ip',
MASTER_USER = 'mysql',
MASTER_PASSWORD = '密碼',
MASTER_PORT = 9001,MASTER_LOG_FILE='mysql-bin.xxx',MASTER_LOG_POS=xxx, # 填寫第一步驟查看到的值
MASTER_RETRY_COUNT = 60,
MASTER_HEARTBEAT_PERIOD = 10000;# 啟動slavestart slave;# 通過查看主數據庫的條數來判斷數據是否同步select count(*) from xxx;
4)數據回滾

從節點數據備份

以下操作在從節點上執行

# 將數據源進行更換,重復第二步驟即可。
10、常用命令
# 導出mysqldump –u [username] –p [password] databaseName > [objectName];# 導入source [objectName];# 鎖表(防止數據寫入)flush tables with read lock;# 解表unlock tables;# 跳過錯誤,恢復主從狀態set global sql_slave_skip_counter=1;


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。


關鍵詞: 數據庫 MySQL

相關推薦

技術專區

關閉