docker及docker-compose配置安装略…
docker-compose文件,安装mysql容器
version: '3'
services:
mysql:
image: "mysql:latest"
container_name: mysql_db
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
volumes:
- "~/dockerData/mysql/data:/var/lib/mysql"
- "~/dockerData/mysql/conf:/etc/mysql/conf.d"
- "~/dockerData/mysql/log:/var/log/mysql"
- 在主机创建相应文件夹,将docker容器中MySQL的数据文件、配置文件、日志挂载到宿主机
- “~/dockerData/mysql/data:/var/lib/mysql”
- “~/dockerData/mysql/conf:/etc/mysql/conf.d”
- “~/dockerData/mysql/log:/var/log/mysql”
配置两个虚拟机容器(注意两个容器挂载到本机的路径,不要冲突),并开启远程登录后(方便在mysql桌面软件上面查看和操作),可继续。
配置主从节点的大致步骤
- 主服务器开启binlog日志,配置主从节点内唯一的server_id,创建用于复制的账号并开启相应权限;
- 从服务器配置唯一的server_id,创建用于复制的账号并配置需要的权限,(测试时可用 root不需单独配置);
- 开始复制前,查看主服务器binlog日志信息;
- 如果开始复制前,主服务器已经有数据,则需要把创建数据快照或者直接导出数据文件;
- 在从服务器配置需要连接的主服务器的host、port、user、password、log信息;
- 开启从服务器复制。
主服务器配置
1、在主服务器的宿主机mysql/conf文件夹内创建配置文件,并开启相应配置。
vim my.cnf
my.cnf文件内容
[mysqld]
log-bin=mysql-bin //日志文件前缀 mysql-bin 可修改
server-id=1 //配置serverid
配置完成后,重启mysql容器
docker restart mysql_db
2、创建配置用于复制的账号
mysql> CREATE USER 'testslave'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'testslave'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
‘testslave’ 为创建的用户名,‘123456’为密码,创建完后可查看对应权限,
使用FLUSH PRIVILEGES刷新。
mysql> SHOW GRANTS FOR 'testslave'@'%';
+---------------------------------------------------------------------+
| Grants for testslave@% |
+---------------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `testslave`@`%` WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
3、查看主服务器的binlog信息
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 2891 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
File 指当前使用的log日志文件名
Position 当前日志的位置信息
以上两个信息都需要在配置从服务器的时候用到
从服务器配置
1、创建配置文件并开启相应配置
my.cnf
配置server-id为2,忽略部分表
[mysqld]
server-id=2
## 忽略表
replicate-wild-ignore-table=mysql.*
replicate-wild-ignore-table=sys.*
2、配置同步参数
CHANGE MASTER TO
MASTER_HOST='192.168.43.130',
MASTER_PORT=3306,
MASTER_USER='slaveuser',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1071;
3、配置完成后,开启同步进程
mysql > START SLAVE;
4、检查状态
mysql > show slave status \G;
mysql> SHOW SLAVE STATUS \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 192.168.43.130
Master_User: slaveuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 1071
Relay_Log_File: 2d1a999f20c2-relay-bin.000005
Relay_Log_Pos: 326
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //yes代表正常
Slave_SQL_Running: Yes //为yes代表正常 以上两处为yes则表示正常
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table: mysql.*,sys.*
Last_Errno: 0
Last_Error:
Skip_Counter: 0
参考文章:https://blog.csdn.net/agonie201218/article/details/121499881
mysql文档:https://dev.mysql.com/doc/refman/8.0/en/creating-accounts.html#creating-accounts-granting-privileges