setenforce 0
vim /etc/sysconfig/selinux
SELINUX=disabled
# 若不關閉,使用docker啟動mysql5.7鏡像容器時啟動不起來,檢視日志會有如下錯誤顯示:
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 13 - Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)
log_bin是否開啟
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set
檢視master狀态
mysql> show master status;
+------------------+----------+--------------+--------------------------------------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+--------------------------------------------------+-------------------+
| mysql-bin.000001 | 154 | test | mysql,information_schema,performation_schema,sys | |
+------------------+----------+--------------+--------------------------------------------------+-------------------+
1 row in set
注意:mysql-bin.000001 跟154這倆參數從庫會使用到,根據實際情況修改
【從庫】配置及操作
/datavol/mysql-110/conf/
[client]
port = 3306
default-character-set = utf8mb4
[mysql]
port = 3306
default-character-set = utf8mb4
[mysqld]
##########################
# summary
##########################
#bind-address = 0.0.0.0
#port = 3306
datadir=/datavol/mysql/data #資料存儲目錄,根據實際情況而定,在docker中是指定其他目錄了,這個目錄沒用使用,但是若不是docker的話則需要指定這個配置
##########################
# log bin
##########################
server-id = 110
##########################
# character set
##########################
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
安裝啟動從庫
[root@localhost ~]# docker run -d -p 3606:3306 --name=mysql-110 -v /datavol/mysql-110/conf:/etc/mysql/conf.d -v /datavol/mysql-110/mysql:/var/lib/mysql -w /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
19e93b6d93ca4e6ca0d540e3f6c831b835cdbb35362733867c3977aee4d33bf7
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19e93b6d93ca mysql:5.7 "docker-entrypoint..." 4 seconds ago Up 3 seconds 33060/tcp, 0.0.0.0:3606->3306/tcp mysql-110
[root@localhost ~]# docker exec -it mysql-110 /bin/bash
root@19e93b6d93ca:/# mysql -u root -p
Enter password:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`age` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
新增
在【主庫】中向user表插入一條資料:
mysql> use test;
Database changed
mysql> INSERT INTO user (id, name, age) VALUES (1, '張三', 18);
Database changed
mysql> SELECT * FROM user;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 張三 | 18 |
+----+------+-----+
1 row in set
在【從庫】中查詢user表資料:
mysql> use test;
Database changed
mysql> SELECT * FROM user;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 張三 | 18 |
+----+------+-----+
1 row in set
新增記錄同步成功。
更新
在【主庫】中修改剛才插入的資料:
# 問題:在docker環境中登陸mysql,輸入中文的話不顯示,就比如下面這個,複制後粘貼到MySQL指令行中執行,李四這倆字不顯示,是空的,有待進一步研究
mysql> UPDATE user SET name='李四' where id=1;
Database changed
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM user;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 李四 | 18 |
+----+------+-----+
1 row in set
mysql> SELECT * FROM user;
+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 李四 | 18 |
+----+------+-----+
1 row in set
更新記錄同步成功。
删除
在【主庫】中删除剛才更新的資料:
mysql> DELETE FROM user WHERE id=1;
Database changed
mysql> SELECT * FROM user;
Empty set