mysql設計與優化(二)——配置主從
阿新 • • 發佈:2020-07-26
mysql設計與優化(二)——配置主從
目錄
背景描述:
老闆讓部署主從。
1 操作
1.1 安裝mysql-5.7.26-1.el7.x86_64
> cd /usr/local/src/ > wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar > tar -vxf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar > rpm -e --nodeps mariadb-libs > rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm > rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm > rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm > rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
1.2 配置檔案
- 主機配置
vim /etc/my.cnf
#需新增的配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
server-id=1
innodb_flush_log_at_trx_commit=2
sync_binlog=1
log-bin=mysql-bin-1
- 從機配置
vim /etc/my.cnf
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION server-id=2 innodb_flush_log_at_trx_commit=2 sync_binlog=1 log-bin=mysql-bin-2
1.3 主從配置
進入主機mysq;
GRANT REPLICATION SLAVE ON *.* to 'repl'@'168.160.19.35' identified by 'SEC90opl;./'; show master status; +--------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +--------------------+----------+--------------+------------------+-------------------+ | mysql-bin-1.000001 | 449 | | | | +--------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) 把file列和Position列記錄下來,一會配置slave要用到
從機配置
change master to master_host='168.160.17.24',master_user='repl' ,master_password='SEC90opl;./', master_log_file='mysql-bin-1.000001' ,master_log_pos=449;
start slave;
show slave status;
1.4 設定使用者,授權
> systemctl start mysqld.service
#檢視預設密碼
mysql>> grep "password" /var/log/mysqld.log
mysql>> CREATE USER 'ecApp'@'168.160.19.%' IDENTIFIED BY 'SEC90opl;./';
mysql>> grant ALL PRIVILEGES on ecdb.* to ecApp@'168.160.19.%' identified by 'SEC90opl;./';
mysql>> flush privileges;
1.5 開通埠
> firewall-cmd --zone=public --add-port=3306/tcp --permanent
> firewall-cmd --reload
> netstat -tunlp
#關閉防火牆
> systemctl stop firewalld.service
這樣部署可以實現讀寫分離,從機備份主機的資料,提高安全性。
但是隻能主機寫,從機只能查詢,而且還需要調整程式碼。不算最好的解決方案。