mysql 主從資料庫搭建
- 一、建立目錄
- 二、建立配置檔案
- 三、建立容器
- 四、搭建從庫
- 五、測試
一、建立目錄
1)在 dev/htb 下面建立檔案夾 master01
htb]# mkdir mysql/master01 -p
2)進入 master01
3)mkdir conf data 建立兩個檔案夾
4)mkdir conf data 修改權限
二、建立配置檔案
1)進入 conf
2)vim my.cnf
3)添加如下内容
[mysqld]
log-bin=mysql-bin #開啟二進制日志
server-id=1 #服務 id,不可重複
三、建立容器
docker create --name percona-master01 -v /dev/htb/mysql/master01/data:/var/lib/mysql -v /dev/htb/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
2)建立新的連接配接
添加 IP位址,端口号是 3306 使用者名 root 密碼 root
3)連接配接成功之後,運作 指令界面建立查詢
輸入如下指令
create user ‘kgc’@’%’ identified by ‘kgc’;
grant replication slave on . to ‘kgc’@’%’;
flush privileges;
4)重新開機
docker restart percona-master01 && docker logs -f percona-master01
5) 建立查詢,運作
show master status;
6)檢視二進制日志相關的配置項
show global variables like ‘binlog%’;
上面的隻要是有資料就行
7)檢視 server 相關的配置項
show global variables like ‘server%’;
可以看到伺服器的 id 是 1,這個id 一個叢集裡面是唯一的
四、搭建從庫
1)建立目錄
/dev/htb/mysql/slave01
cd /dev/htb/mysql/slave01
進入 slave01
mkdir conf data
2)修改權限
chmod 777 * -R
3)添加配置檔案
進入 conf
vim my.cnf
添加如下内容
[mysqld]
server-id=2 #服務 id,不可重複
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
4)建立容器
docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v
/data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root
percona:5.7.23
/dev/htb/mysql
docker create --name percona-slave01 -v /dev/htb/mysql/slave01/data:/var/lib/mysql -v /dev/htb/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
5)啟動
docker start percona-slave01 && docker logs -f percona-slave01
6)指定模式
set sql_mode = ‘’; set sql_mode = ‘NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES’;
CHANGE MASTER TO master_host=‘182.92.88.141’, master_user=‘kgc’, master_password=‘kgc’, master_port=3306, master_log_file=‘mysql-bin.000004’, master_log_pos=154;
7)啟動同步 start slave;
8)檢視 master 狀态 show slave status;
看到的是兩個yes 說明主從資料庫已經搭建完成
五、測試
在主庫建立一個資料庫,建立表格,插入資料,重新整理從庫之後可以看到相同的資料庫,相同的表格,相同的資料,測試成功