成都 企业 网站制作,大连营商建设局网站,网站查看,凡科互动小游戏怎么刷高分0. 配置说明
宿主机使用的版本为19045的win10专业版#xff0c;MySQL使用的是8.0#xff0c;Docker容器使用Linux。
1. 安装Docker Desktop
略 修改Docker默认安装路径 安装包自己就提供了修改安装路径的功能#xff0c;CMD中运行#xff1a; “Docker Desktop Installe…0. 配置说明
宿主机使用的版本为19045的win10专业版MySQL使用的是8.0Docker容器使用Linux。
1. 安装Docker Desktop
略 修改Docker默认安装路径 安装包自己就提供了修改安装路径的功能CMD中运行 “Docker Desktop Installer.exe” install --installation-dir --installation-dirpath: changes the default installation location (C:\Program Files\Docker\Docker) 2. 在Docker中安装MySQL
可以访问 MySQL 镜像库地址https://hub.docker.com/_/mysql?tabtags 查看可用的其他mysql版本默认为最新版本mysql:latest
2.1 拉取MySQL镜像
$ docker pull mysql:latest2.2 查看本地镜像
$ docker images2.3 启动MySQL容器实例
$ docker run --name mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD5508769123 -d mysql参数说明 docker run告诉Docker启动一个新的容器–name mysql 指定了容器的名称这里是 “mysql”-p 3309:3306端口映射设置将容器内的MySQL数据库端口默认为3306映射到主机上的3309端口。这样可以通过主机的3309端口访问MySQL服务器-e MYSQL_ROOT_PASSWORD5508769123环境变量的设置用于配置MySQL容器的根用户root的密码。这里密码被设置为 “5508769123”-d表示以后台detached模式运行容器mysql要运行的Docker镜像的名称 下面给出的输出16821a8792a185997c1b5df334fa4461a157488e90d881902596e7ff3db8c42f为容器的id。
2.4 检查安装
$ docker ps打开Docker Desktop检查 宿主机登录Docker中的MySQL 3. 主从复制
3.1 设置主库(这里为宿主机器) 修改主库MySQL数据库的配置文件这里配置文件位置为C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 添加信息为 [mysqld]
log-binmysql-bin #必须启用二进制日志
server-id100 #必须服务器唯一ID找到[mysqld]标签然后添加下面两行即可 重启MySQL服务 (管理员权限) $ net stop mysql80$ net start mysql80在主库创建新用户并赋权 登录主库然后执行下面两条指令 CREATE USER mercurows% IDENTIFIED WITH caching_sha2_password BY 5508769123;
GRANT REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO mercurows%;**注意**mysql8 之前的版本中加密规则是mysql_native_password而在mysql8之后,加密规则是caching_sha2_password。我们发现root的加密规则为caching_sha2_password现在修改为mysql_native_password ALTER USER mercurows% IDENTIFIED WITH mysql_native_password BY 5508769123;解释 CREATE USER创建一个新用户。 mercurows%新用户的标识符。mercurows 是用户名% 表示这个用户可以从任何主机连接到MySQL服务器。如果想限制用户只能从特定主机连接可以在 % 的位置指定相应的主机地址。 IDENTIFIED WITH caching_sha2_password BY 5508769123用户的身份验证方法和密码。在这里用户的身份验证方法被设置为 caching_sha2_password并且密码被设置为 5508769123。注意mysql8 之前的版本中加密规则是mysql_native_password而在mysql8之后,加密规则是caching_sha2_password。 REPLICATION SLAVE, REPLICATION CLIENT表示授予用户 ‘mercurows’ 两种权限REPLICATION SLAVE用于复制从其他MySQL服务器和 REPLICATION CLIENT用于查询和管理复制状态。 ON *.*表示授予权限的范围*.* 表示所有数据库和所有表。 TO mercurows%这部分指定了要授予权限的用户和其访问主机。与前一个命令相同mercurows% 表示 ‘mercurows’ 用户可以从任何主机连接。 检查 flush privileges;
SHOW GRANTS FOR mercurows%;检查主库状态 show master status;并记录File与Position这两个记录这里是DESKTOP-UPK0D57-bin.000038与1353注意在完成设置之前都不能对主库进行操作以免这两个记录发生改变。
3.2 设置从库(这里为Docker中的MySQL) 修改从库MySQL数据库的配置文件这里文件在/etc/my.cnf中 添加信息为 [mysqld]
server-id100 #必须服务器唯一ID找到[mysqld]标签然后添加下面一行然后保存即可 重启MySQL服务(我这里直接重启容器了) 登录从库中的MySQL然后执行下面的语句 change master to master_host192.168.1.172,master_port3306,master_usermercurows,master_password5508769123,master_log_fileDESKTOP-UPK0D57-bin.000038,master_log_pos1353;start slave;解释 change master to告诉MySQL服务器接下来要更改主从复制的设置master_host192.168.1.172指定主数据库的主机名或IP地址。在这里就是我宿主电脑的IP地址master_port3306指定主数据库的端口号。默认情况下MySQL的端口号是3306master_usermercurows指定连接到主数据库的用户名这里用户名是 mercurows。这个就是上面主数据库中刚刚创建的用户master_password5508769123这是指定连接到主数据库的用户的密码这里密码是 5508769123master_log_fileDESKTOP-UPK0D57-bin.000038这是指定主数据库上用于复制的二进制日志文件的名称。在主从复制中主数据库会将更改记录在二进制日志文件中从数据库会从这些文件中读取并应用这些更改。而这个日志名称在上面的3.1中的4.检查主库状态中得出master_log_pos1353这是指定从哪个位置开始读取主数据库的二进制日志文件。而这个位置在上面的3.1中的4.检查主库状态中得出 检查 show slave status \G;slave机器上有两个关键的进程必须两个都要显示为 Y E S YES YES一个是Slave_IO_Running:一个是Slave_SQL_Running:一个负责与主机的io通信一个负责自己的slave mysql进程。
3.3 测试
初始数据库情况
mysql–主库slave–从库
在主库中创建testdatabase数据库然后刷新从库 在主库创建user表并刷新从库 经测试对主库的增删改均能同步到从库中。
参考
如何在Windows上更改Docker的默认安装路径docker搭建mysql8主从复制一主一从