内容简介:目前已完成:php7及扩展、redis5的Dockerfile测试版编写,稍许完善后同步上传到github,(记下这里memcached还没有剥离安装)。今天数据库,编程的一个重要原则是不要重复造轮子,php因为需要很多自定义插件、所以单独编译镜像,其实其他包括redis都应该使用官方的,直接pull就行。一、mysql部分
目前已完成:php7及扩展、 redis 5的Dockerfile测试版编写,稍许完善后同步上传到github,(记下这里 memcached 还没有剥离安装)。
今天数据库,编程的一个重要原则是不要重复造轮子,php因为需要很多自定义插件、所以单独编译镜像,其实其他包括redis都应该使用官方的,直接pull就行。
一、 mysql 部分
参考 官方镜像 ,根据官方镜像,准备的mysql、mysql_slave文件树,添加了个数据文件夹。
[]:~/tmp/dk/mysql/mysql_slave# tree ./ ./ ├── config │ ├── conf.d │ │ └── docker.cnf │ └── my.cnf └── data
1、创建mysql镜像
[]:~/tmp/dk# docker pull mysql:8.0
[]:~/tmp/dk# docker run --name mq -p 3306:3306 -v /root/tmp/dk/mysql/data:/var/lib/mysql \
-v /root/tmp/dk/mysql/config:/etc/mysql \
-v /root/tmp/dk/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
[]:~/tmp/dk# docker run --name ms -p 3308:3306 -v /root/tmp/dk/mysql_slave/data:/var/lib/mysql \
-v /root/tmp/dk/mysql_slave/config:/etc/mysql \
-v /root/tmp/dk/mysql_slave/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
退出后台运行的容器,按 Ctrl+D 进行退出容器,请牢记!
run后运行的容器进入:
a.旧式进入 []:~/tmp/dk# docker attach mq b.命令进入 []:~/tmp/dk# docker exec -it mq /bin/bash(或/bin/sh)
参考《 Docker容器进入的4种方式 》
a.普通进入:有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。
b.推荐
2、主从同步数据
# 主服务器 mysql> CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Ron_master_1'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; mysql> flush privileges;
# 从服务器
# remote_host可以是 192.168.1.102 的相对于容器的公网地址
#重置复制状态参数
mysql> reset slave all;
Query OK, 0 rows affected (0.02 sec)
mysql> change master to master_host='remote_host',master_port=3306,master_user='repl',\
master_password='Ron_master_1',master_log_file='mysql-bin.000003',master_log_pos=155;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
# 关闭从服务
mysql> STOP SLAVE;
如在配置主从同步前master中已有数据,则需提前进行数据同步操作
登录master,执行锁表操作
# 主服务器容器 mysql> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.01 sec) # 完成后 mysql> UNLOCK TABLES; Query OK, 0 rows affected (0.00 sec)
# 从服务器容器 xx@fd8bb25a86fc:/# mysqldump -uroot -p -h remote_host -P3306 test > /tmp/test.dump Enter password: xx@fd8bb25a86fc:/# mysql -uroot -p123456 mysql> create database test; Query OK, 1 row affected (0.01 sec) # 或直接use然后source file mysql> quit Bye xx@fd8bb25a86fc:/# mysql -u root -p test < /tmp/test.dump
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Elasticsearch 集群搭建和集群原理
- Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
- Spark集群环境搭建
- Zookeeper搭建集群
- FastDFS集群搭建
- Zookeeper集群环境搭建
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Fluent Python
Luciano Ramalho / O'Reilly Media / 2015-8-20 / USD 39.99
Learn how to write idiomatic, effective Python code by leveraging its best features. Python's simplicity quickly lets you become productive with it, but this often means you aren’t using everything th......一起来看看 《Fluent Python》 这本书的介绍吧!