ToB企服应用市场:ToB评测及商务社交产业平台

标题: docker下安装mysql,并实现主从复制 [打印本页]

作者: 吴旭华    时间: 2024-5-26 14:30
标题: docker下安装mysql,并实现主从复制
1 mysql的安装与启动
  1. 1.1 拉取mysql5.7的镜像<br>docker pull mysql:5.7<br><br>1.2 运行<br>
复制代码
  docker run: 运行Docker容器的命令。
  1. [/code]  --restart=always: 指定容器在退出时总是重新启动。这意味着,无论容器是正常退出还是异常退出,Docker将主动重新启动这个容器。
  2. [code]
复制代码
  --privileged=true: 赋予容器特权,允许它在主机上执行一些敏感操作,这通常是出于一些特殊需求的思量,但需要注意潜在的安全风险。
  1. [/code]  -p 13306:3306: 将主机的端口13306映射到容器的端口3306,如许外部系统可以通过主机的3306端口访问MySQL服务。
  2. [code]
复制代码
  --name mysql: 为容器指定一个名称,这里是"mysql"。
  1. [/code]  -v /opt/mysql/mysql-master/logs:/logs: 将主机上的/opt/mysql/mysql-master/logs目次映射到容器内的/logs目次,用于存储MySQL的日志文件。
  2. [code]
复制代码
  -v /opt/mysql/mysql-master/data:/var/lib/mysql: 将主机上的/opt/mysql/mysql-master/data目次映射到容器内的/var/lib/mysql目次,用于存储MySQL的数据文件。
  1. [/code]  -v /opt/mysql/mysql-master/conf:/etc/mysql: 将主机上的/opt/mysql/mysql-master/conf目次映射到容器内的/etc/mysql目次,用于存储MySQL的配置文件。
  2. [code]
复制代码
  -v /opt/mysql/mysql-master/my.cnf:/etc/mysql/my.cnf: 将主机上的/opt/mysql/mysql-master/my.cnf文件映射到容器内的/etc/mysql/my.cnf文件,这是MySQL的配置文件。
  1. [/code]  -e MYSQL_ROOT_PASSWORD=mysql: 设置MySQL的root用户暗码为"mysql",如果不设置,会在日志中天生一个默认root暗码,通过docker logs mysql-container检察。
  2. [code]
复制代码
  -d mysql:5.7 以后台(detached)模式运行MySQL容器。
 
  #如下
  docker run
  --name mysql-master
  -p 13306:3306
  -v /opt/mysql/mysql-master/logs:/logs
  -v /opt/mysql/mysql-master/data:/var/lib/mysql
  -v /opt/mysql/mysql-master/conf:/etc/mysql/conf.d
  -e MYSQL_ROOT_PASSWORD=mysql
  -d
  mysql:5.7
 
  1.3 主机上记得把13306端口放开,或者关闭防火墙
 firewall-cmd --zone=public --add-port=13306/tcp --permanent
 firewall-cmd --reload
 
  1. 至此可以通过数据连接工具进行连接了,启动完成<br><br>1.5 小记<br>进入mysql容器,如果出现  #bash-4.2<br>在容器中执行:
复制代码
  1. cp /etc/skel/.bash* /root/
复制代码
  1. [/code][align=center][img]https://img2024.cnblogs.com/blog/2788181/202405/2788181-20240525175330787-128587479.png[/img][/align]
  2.   2 搭建mysql集群
  3. [code]2.1 修改主节点的onf.d文件内容
复制代码
  vim /opt/mysql/mysql-slave1/my.cnf
  #加入如下配置
  server-id=1    #设置服务id,需全局唯一
  log-bin=/var/lib/mysql/mysql-bin  #加入binlog配置,供从库读取
  #binlog-do-db =test
  binlog-ignore-db=mysql
  binlog-ignore-db=sys
  binlog-ignore-db=performance_scheme
  binlog-ignore-db=information_scheme
  binlog_format=row

  #重启主节点
  docker restart mysql-master
  
 2.2 master节点创建一个用户
  1. docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master   #查看主节点在容器中的ip

  2. docker exec -it mysql-master bash  #进入容器
  3. mysql -uroot -p123 #登录mysql
  4. #创建用户方式一,创号授权一步到位
  5. grant replication slave on *.* to 'slave1'@'172.17.0.2' identified by '账号密码'  #创建一个名为slave1的用户并给其复制权限,可以mysql数据库中user表中查看,此为mysql5.7版本语句
  6. #创建用户方式二,创号授权分开来
  7. CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';这里的username是您要创建的用户名,hostname指定从哪些主机该用户可以连接到服务器,password是该用户的密码。您可以使用%作为通配符来允许从任何主机连接
  8. GRANT ALL PRIVILEGES ON database_name.table_name TO 'username'@'hostname';这里的database_name和table_name指定了用户被授权的数据库和表。ALL PRIVILEGES表示授予用户所有权限。您也可以根据需要授予特定权限,如SELECT, INSERT, UPDATE, DELETE等。
  9. FLUSH PRIVILEGES; 刷新权限。

  10. #查看master的position,这是个会变化的值,后面从机连接主机时会用到。
  11. show master status;
复制代码
  1. 2.3 docker上再创建一个mysql容器mysql-slave1
复制代码
  docker run
  --name mysql-slave1
  -p 13307:3306
  -v /opt/mysql/mysql-slave1/logs:/logs
  -v /opt/mysql/mysql-slave1/data:/var/lib/mysql
  -v /opt/mysql/mysql-slave1/conf:/etc/mysql/conf.d
  -e MYSQL_ROOT_PASSWORD=mysql
  -d
  mysql:5.7
  同样要记得关闭防火墙或开放端口出去
  1. 2.4 配置从库<br>vim otp/mysql/mysql-slave1/conf/my.cnf<br> #加入服务id配置<br> [mysqld]<br> server-id=2    #要全局唯一<br>docker restart mysql-slave #重启从库<br><br>docker exec -it mysql-slave baash #进入从库<br>mysql -uroot -p123 #登录mysql<br><br>? change master to #此条命令可以查看配置列表模板,辅助配置<br><br>#配置主库连接<br>#将mysql设置为从库<br> CHANGE MASTER TO MASTER_HOST = '172.17.0.2', MASTER_USER = 'slave1', MASTER_PASSWORD = 'mysql', MASTER_PORT = 3306, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;<br> 说明:连接master信息只配置主机名、端口、用户名、密码也足以实现连接。<br><br>#开启slave同步<br>start slave;<br><br>
复制代码

   #检察是否配置成功
  show slave status\G;

 Slave_IO_Running、Slave_SQL_Running这两处显示两个yes,则说明主从复制建立成功,也可以在主库写入数据,在从库进行查询,如果能查到主库写入的信息,则也能说明主从关系建立成功。
 至此,mysql的主从复制搭建完成,如果需要增加从节点继续创建slave即可,注意server-id不可重复。
  #若想制止从库同步
  stop slave
 
  1. 搭建过程中出现报错可参考:https://blog.51cto.com/u_15956038/6040698<br><br>
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4