MySQL安装
来自菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html
一:使用docker pull mysql从hub上拉取镜像文件
二:使用docker images查看本地镜像列表
三:创建mysql容器:docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
四:查看运行进程docker ps
五:测试连接:
先进入容器
docker exec -it mysql bash
登陆数据
mysql -u root -p
修改登陆密码和密码加密方式如下
alter user 'root'@'%' identified with mysql_native_password by 'root';
数据库安装完成可以自己搞着玩了!!!
MySQL的主从架构配置
Docker下一个镜像文件可以做成N个容器,每个容器相当于一个微型的系统运行在Docker下独立互不影响没有任何关系。一般容器里面需要配置的一些配置都挂载到宿主机下面方便管理不然会很麻烦还要进到容器里面去修改也很容易丢失配置文件。
环境:数据库版本maysql:5.7因为8.0版本有个问题解决不掉设置主从报错没解决掉。
No1.在宿主机创建主库挂载文件master节点配置
这是放到宿主机的文件需要容器运行时挂载目录。
/etc/mySql/mastermy.cnf和/etc/mySql/slave1/my.cnf目录下面了。
[mysqld]
#开启log
log-bin=mysql-bin
#实例ID
server-id = 1
binlog-do-db=king
#不同步二进制数据库设置如下(可以设置也可以不设置)
binlog-ignore-db=mysql
binlog-ignore-db=test
No2.在宿主机创建从库挂载文件slave1节点配置
[mysqld]
#开启log
log-bin=mysql-bin
#实例ID
server-id = 2
binlog-do-db=king
#不同步二进制数据库设置如下(可以设置也可以不设置)
binlog-ignore-db=mysql
binlog-ignore-db=test
No3.分别启动主从MySQL容器
docker run --name mysql_master -v /etc/mySql/master/:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=123456 -p 3316:3306 -d mysql:5.7
docker run --name mysql_slave1 -v /etc/mySql/slave1/:/etc/mysql/conf.d/ -e MYSQL_ROOT_PASSWORD=123456 -p 3326:3306 -d mysql:5.7
(如果报2059就是mysql密码加密规则的问题修改一下:
进入容器:docker exec -it 容器ID bash
进入mysql:mysql -u root -p
修改密码加密规则:alter user 'root'@'%' identified with mysql_native_password by '654321';
刷新:flush privileges;完成!!!)
No4.分别设置主从数据库远程访问权限
赋权限:GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'root'@'123.206.75.61' IDENTIFIED BY '123456';
刷新权限生效:FLUSH PRIVILEGES;
No5.进入从库登录mysql设置主库配置
进入从容器:docker ps拿到容器ID,docker exec -it 容器ID bash命令进入容器
进入从数据库:mysql -u root -p
从库关闭之后设置:stop slave;
从库设置主库配置:change master to master_host='123.206.75.61',master_port=3316,master_user='root',master_password='123456';
启动:start slave;
查看从库主从搭建是否成功:show slave status\G;#Slave_IO_Running:yes Slave_SQL_Running:yes即可
(这样我们在主库创建数据表添加数据都会同步到从库中去了navicat亲测有效)
No6.基于Atlas构建代理节点主要功能如下(读写分离,从库负载均衡,自动分表,IP过滤,SQL语句黑白名单等)
下载地址:https://github.com/Qihoo360/Atlas/releases/tag/sharding-1.0.1
下载后上传到服务器执行:rpm -i Atlas-2.2.1.el6.x86_64.rpm
执行完成后安装目录:/usr/local/mysql-proxy
生成加密密码进入目录:/usr/local/mysql-proxy/bin(执行:./encrypt 123456#得到/iZxz+0GRoA=)
修改配置文件:/usr/local/mysql-proxy/conf/test.cnf内容如下:
#Atlas后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔
proxy-backend-addresses = 127.0.0.1:3316#这里是主库IP
#Atlas后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
proxy-read-only-backend-addresses = 127.0.0.1:3326@1#这里是从库IP可以多个用逗号隔开
#用户名与其对应的加密过的MySQL密码,密码使用PREFIX/bin目录下的加密程序encrypt加密,下行的user1和user2为示例,将其替换为你的MySQL的用户名
和加密密码!
pwds = root:/iZxz+0GRoA=
#SQL日志的开关,可设置为OFF、ON、REALTIME,OFF代表不记录SQL日志,ON代表记录SQL日志,REALTIME代表记录SQL日志且实时写入磁盘,默认为OFF
sql-log = REALTIME
修改后启动./mysql-proxyd test start
关闭./mysql-proxyd test rstop
重启./mysql-proxyd test restart
No7.测试Atlas
检查一下是否启动:
/usr/local/mysql-proxy/bin/mysql-proxyd test status
连到后台管理接口:
mysql -h123.206.75.61 -P2345 -uadmin -padmin
检查DBServer状态:
SELECT * FROM backends;#不知道第一次state是down重新过了一遍又是up了
No7.测试查看log
使用navicat连接atlas地址123.206.75.61:1234/root/123456执行查询和添加语句
查看日志路径/usr/local/mysql-proxy/log
既可以看到读写分离的日志了。
只是自己百度摸索敲了一遍,后续实战再补充!!!
Nginx安装
一:使用dicker search nginx产看镜像源存在docker hub上托管
二:使用docker pull nginx拉取镜像
三:使用docker images查看本地镜像列表
四:启动nginx容器:docker run -p 80:80 nginx
先在本地找nginx镜像没有就是Docker仓库下载到本地。
91表示宿主机80宿主机下的一个小箱子
五:查看nginx进程服务:ps -ef |grep nginx
六:使用ifconfig查看机器的ip进行测试nginx:
注意:直接访问宿主机地址加端口号即可,外部不可直接访问容器,宿主机是可以直接访问。
七:查看运行的容器:docker ps