本文共 4566 字,大约阅读时间需要 15 分钟。
环境: ubuntu 18.04
docker 18.03.1-ce mysql 5.7.91.拉取docker镜像文件
docker pull mysql:5.7.9拉取完成后,执行docker images查看镜像是否拉取完成
2.首先启动mysql镜像文件:
*************mysql主节点*******************
docker run --name mysql01 \ -p 3306:3306 \ -h mysql01 \ -v mysql_data_1:/var/lib/mysql \ -v mysql_conf_1:/etc/mysql/ \ -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.9****************mysql从节点***********************
docker run --name mysql02 \ -p 3307:3306 \ -h mysql02 \ -v mysql_data_2:/var/lib/mysql \ -v mysql_conf_2:/etc/mysql/ \ -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.93.通过docker ps查看镜像是否启动成功,可以通过以下命令进入mysql容器
docker exec -it mysql01 bash 进入容器 mysql -uroot -proot进入mysql 如果没有问题,则停止mysql容器修改配置文件,执行以下命令 docker stop mysql01 mysql024.修改配置文件
cd /var/lib/docker/volumes/ 目录下 修改mysql01的配置文件 cd /var/lib/docker/volumes/mysql_conf_1/_data vim my.cnf ************************************************************************************************** # Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA#
# The MySQL Community Server configuration file. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html[client]
default-character-set = utf8 port = 3306 socket = /var/run/mysqld/mysqld.sock[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock nice = 0[mysqld]
skip-host-cache skip-name-resolve user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql explicit_defaults_for_timestamp lower_case_table_names = 1 max_connections = 1000 character-set-server = utf8# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored. # sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER # log_bin,必须开启 bin 日志. log_bin=master-bin.log # These are commonly set, remove the # and set as required. # basedir = ..... # datadir = ..... # port = ..... # server_id = .....必须设置 server_id,保证集群内的唯一性.可以用 ip 地址最后 3 位 server_id = 106 # socket = ..... #所有事务提交必须写入硬盘 innodb_flush_log_at_trx_commit=1 #必须同步 bin 日志 sync_binlog=1 binlog_format=mixed max_connections=1000 relay-log=master-relay-bin #master-info-repository=table #relay-log-info-repository=table relay-log-recovery=1 !includedir /etc/mysql/conf.d/ ************************************************************************************************** 修改mysql02的配置文件 cd /var/lib/docker/volumes/mysql_conf_2/_data vim my.cnf 和上边基本一致,只需要修改server_id即可5.重新启动mysql容器
docker restart mysql02 mysql02 然后通过docker ps 查看容器是否成功启动6.配置mysql主从应用
1)配置主节点
docker exec -it mysql01 bash 进入到mysql01容器中,登录mysql的root用户 mysql -uroot -proot 然后创建用户并赋权,这里表示创建一个slaver同步账号topcom,允许访问的IP地址为%,%表示通配符 GRANT REPLICATION SLAVE,reload,super ON *.* to 'topcom'@'%' identified by 'topcom123'; flush PRIVILEGES;查看状态,记住File、Position的值,在Slaver中将用到
show master status;2)配置从节点
docker exec -it mysql02 bash 进入到mysql02容器中,登录mysql的root用户 启动mysql命令,刚在创建窗口时我们把密码设置为root mysql -uroot -proot设置主库链接,要和Master服务器所配置的相互对应如下如所示的Position对应,经过测试发现如果是一样的只能同步一次,所以这里修正成0,0是可以每次都同步成功的
change master to master_host='192.168.0.211',master_user='topcom',master_password='topcom123',master_log_file='master-bin.000003',master_log_pos=0,master_port=3306;启动从库同步
start slave;查看状态
show slave status\G; 以下数字为Yes,即为完成部署 Slave_IO_Running: Yes Slave_SQL_Running: Yes7.给用户赋权,测试
登录到mysql01的root用户下 创建的用户赋予一定权限 GRANT ALL PRIVILEGES ON *.* to 'topcom'@'%' identified by 'topcom123'; flush PRIVILEGES;在topcom用户下创建数据库,mysql01和mysql02都会有,mysql01和mysql02的数据实时同步
转载地址:https://blog.csdn.net/wyfsxs/article/details/82746434 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!