核心内容摘要
Nodejs+vue+ElementUI校园闲置物品交易管理系统
Docker搭建Mysql8的主从复制通过Docker部署Mysql主从复制Docker安装在前篇有直接演示拉取镜像# 获取有哪些镜像 docker search mysql # 拉取MySQL镜像 docker pull mysql:
8.
32 # 查看镜像 docker images主节点的配置创建数据存储目录mkdir -p /docker/mysql/master/data创建日志目录mkdir -p /docker/mysql/master/logs创建配置文件目录mkdir -p /docker/mysql/master/conf进行快速启动 - 查看镜像是否有问题 注不同的版本的配置文件位置不同可通过快速创建查看mysql的对应的配置文件位置进行对应映射。
# 快速启动 -d是进行守护进程启动 docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD123456 -d mysql:
8.
32 # 启动成功后进入容器内部拷贝配置文件到宿主主机 docker cp mysql8:/etc/mysql /docker/mysql/master/conf # 删除刚才的容器重新创建容器 docker stop mysql8 docker rm mysql8运行容器docker run -p 3340:3306 --name mysql_master --privilegedtrue \ -v /docker/mysql/master/conf:/etc/mysql/conf.d \ -v /docker/mysql/master/logs:/var/log/mysql \ -v /docker/mysql/master/data:/var/lib/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD123456 -d mysql:
8.
32 --init-connectSET collation_connectionutf8mb4_0900_ai_ci --init-connectSET NAMES utf8mb4 --skip-character-set-client-handshake进入容器docker ps -a docker exec -it mysql_master /bin/bash docker exec -it mysql_master env LANGC.UTF-8 /bin/bash # 进入容器这种进入避免显示中午乱码 # 打开MySQL输入密码 mysql -uroot -p # 查看数据库 show databases; # 创建数据库 create database 数据库; # 如果远程链接失败可以修改默认密码校验方式第三方工具可以连接上 ALTER USER root% IDENTIFIED WITH mysql_native_password BY 密码;配置远程连接对外连接的# 在MySQL下执行 use mysql; # 创建对外访问的用户和权限 CREATE USER 用户名% IDENTIFIED WITH mysql_native_password BY 密码; # 授权全部的权限范围大 # GRANT ALL ON *.* TO 用户名% WITH GRANT OPTION; # 刷新权限 FLUSH PRIVILEGES; # 退出 exit创建自定义的配置文件主服务器配置文件cd /docker/mysql/master/conf touch my.cnfmy.cnf文件内容[client] # mysql客户端默认字符集 default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] # 跳过密码登录 #skip-grant-tables #bind-address
127.
0.
1 init_connectSET collation_connection utf8mb4_general_ci init_connectSET NAMES utf8mb4 # mysql服务端默认字符集 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci skip-character-set-client-handshake # datadir/var/lib/mysql # 主服务器唯一ID 默认是1 server-id1 # 设置不要复制的数据库 binlog-ignore-dbmysql binlog-ignore-dbinformation_schema binlog-ignore-dbperformance_schema # 设置需要复制的数据库先创建好 binlog-do-db数据库名 # 启用二进制日志日志的存放地址(默认是binlog)就是在show master status;看到Filed名字 log-bin/var/lib/mysql/mysql-bin # 主机1 只读 0 读写默认是0 read-only0 # 设置logbin格式 有3种格式 # STATEMENT(函数支持不好) 写指令会出现主从数据不同步now函数 # ROW(行模式大量修改效率不行但支持存储引擎) - 默认的 # MIXED (综合推荐) binlog_formatmixed ## 跳过主从复制中遇到的所有错误或指定类型的错误避免slave端复制中断。
## 如1062错误是指一些主键重复1032错误是因为主从数据库数据不一致 slave_skip_errors1062 # 二进制日志过期清理时间默认是0不自动清理 expire_logs_days7 # 单个二进制日志大小 max_binlog_size200M # 设置每隔多少次事务提交操作将这些操作写入二进制日志文件 sync_binlog1 # 使用mysql_native_password插件的认证 # default_authentication_pluginmysql_native_password重启mysql容器docker ps -a docker restart 容器id创建用户并授权给从机主机创建用户# 连接上Mysql服务执行 create user 用户名% identified with mysql_native_password by 密码; # 授权复制的权限 ON后的*.*代表全部的库和表 GRANT REPLICATION SLAVE ON *.* TO 用户名%; # 刷新权限 FLUSH PRIVILEGES; # 如果远程链接失败可以修改默认密码校验方式第三方工具可以连接上 alter user 用户名% identified with mysql_native_password by 密码;查询主机的状态show master status; # 执行上面命令得到 File(binlog日志) Position(接入点) Binlog_Do_DB(要复制的数据库) Binlog_IgnoreDB() # 需要记录一下File、Position从节点配置创建数据目录mkdir -p /docker/mysql/slave/data创建日志目录mkdir -p /docker/mysql/slave/logs创建配置文件目录mkdir -p /docker/mysql/slave/conf创建自定义的配置文件cd /docker/mysql/slave/conf touch my.cnfmysql.cnf文件内容[client] # mysql客户端默认字符集 default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] # 跳过密码登录 #skip-grant-tables #bind-address
127.
0.
1 init_connectSET collation_connection utf8mb4_general_ci init_connectSET NAMES utf8mb4 # mysql服务端默认字符集 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci skip-character-set-client-handshake # datadir/var/lib/mysql # 从服务器唯一ID server-id 2 # 开启中继日志 relay-logmysql-relay # 从机1 只读 0 读写默认是0 read-only1 # 启用二进制日志日志的存放地址如果从机变成主机可以继续使用bin日志 # log-binmysql-slave-bin # 使用mysql_native_password插件的认证 # default_authentiction_pluginmysql_native_password运行容器docker run -p 3341:3306 --name mysql_slave --privilegedtrue \ -v /docker/mysql/slave/conf:/etc/mysql/conf.d \ -v /docker/mysql/slave/logs:/var/log/mysql \ -v /docker/mysql/slave/data:/var/lib/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD123456 -d mysql:
8.