準備條件:2臺Mac電腦,通過虛擬機都裝有Centos7,首先在給2個Centos7系統裝好Mysql8.0,安裝方法見我前面的文章。
Mac-A的Centos地址爲192.168.1.103,爲主數據庫。
Mac-B的Centos地址爲192.168.1.106,爲從數據庫。
因爲我們這邊的linux系統是裝在虛擬機上的,爲了實現主從複製,首先確保192.168.1.103和192.168.1.106主機能夠ping通。
(0)設置虛擬機網絡爲wifi模式,這樣的話就可以分配到192.168.1.X的ip地址,同時連入局域網中了。
(1) 關閉兩臺linux機器的防火牆
查看狀態:systemctl status firewalld
停止firewall:systemctl stop firewalld.service
禁止firewall開機啓動:systemctl disable firewalld.service
(2)開3306端口,並且寫入註冊表
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save 保存到註冊表中
成功寫入返回數據:iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
(3) 測試兩臺機器是否可以通信
在主機中:ping 192.168.1.106,看下是否有數據返回。
在從機中:ping 192.168.1.103,看下是否有數據返回。
一. 主數據庫配置
vim /etc/my.cnf 添加以下字段:
完整的my.cnf內容cat /etc/my.cnf:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
pid-file=/data/mysql/mysql.pid
log-error=/data/mysql/error.log
tmpdir=/tmp
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
#主服務器唯一ID
server-id=1
#啓用二進制日誌
log-bin=mysql-bin
# 設置不要複製的數據庫(可設置多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設置需要複製的數據庫
binlog-do-db=testDB
#設置logbin格式
binlog_format=STATEMENT
啓動mysql:service mysql start 顯示:Starting MySQL SUCCESS!
登錄mysql:cd /usr/local/mysql/bin
./mysql -u root -p
給從機創建授權登錄:create user 'slave'@'192.168.1.106' identified by '123456';
use mysql;
查詢授權過的用戶:select host,user from user;
顯示主機狀態:show master status; 這裏可以拿到主機日誌文件名以及日誌當前位置
#記錄下File和Position的值
#執行完此步驟後不要再操作主服務器MySQL,防止主服務器狀態值變化
二 從機數據庫配置
1. 授權帳號密碼驗證
在從機上終端裏試驗下主機授權給的帳號密碼是否可用,可以用的話,就代表之前在主機上給從機的授權是OK的。
cd /usr/local/mysql/bin
./mysql -u root -p
./mysql -u slave -p -h 192.168.1.103
123456
2. 從機vim /etc/my.cnf配置信息
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
pid-file=/data/mysql/mysql.pid
log-error=/data/mysql/error.log
tmpdir=/tmp
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
# 修改配置文件:vim /etc/my.cnf
#從服務器唯一ID
server-id=2
#啓用中繼日誌
relay-log=mysql-relay
3. 啓動從機mysql,並執行mysql命令
啓動從機數據庫:service mysql start 顯示:Starting MySQL SUCCESS!
登錄從機mysql:cd /usr/local/mysql/bin
./mysql -u root -p
#在從機mysql中執行下面的命令
#複製主機的命令
CHANGE MASTER TO MASTER_HOST='192.168.1.103',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=481;
#啓動從服務器複製功能
start slave;
#查看從服務器狀態 show slave status\G; 如下:(數據比較多,顯示方便,/G代表列顯示)
三 主從複製測試【主機新建庫、新建表、insert 記錄,從機複製】:
在主機上創建一個數據庫testDB,創建一個表,同時插入數據:
create database testDB;
create table mytable(id int, name varchar(20));
insert into mytable values(1, 'zhangsan');
此時查看從機數據,就可以看到剛剛在主機上創建的數據庫和表數據已經自動的被複制到從機mysql中來,如下:
如何停止從服務複製功能 stop slave;
啓動從機:start slave;
重製從機:reset slave;
如何重新配置主從: stop slave;
reset master;
以上就是主從數據庫同步的環境搭建。