在linux环境上搭建html
dockermysql
mysql:linux
wget https://dev.mysql.com/get/downloads/mysql-5.7.22-1.el7.i686.rpm-bundle.tarsql
cd /usr/local安装路径docker
wget https://dev.mysql.com/get/downloads/mysql-5.7.22-1.el7.i686.rpm-bundle.tarjson
tar -zxvf mysql-5.7.22-1.el7.i686.rpm-bundle.tarcentos
docker的安装使用:bash
1. 安装dockerless
# yum install -y dockersocket
2. 启动docker
# systemctl start docker
3. 安装docker镜像
# docker pull [docker镜像地址]
使用阿里云镜像
修改/etc/docker/daemon.json
{
"registry-mirrors": ["https://uulfe4bd.mirror.aliyuncs.com"]
}
4. 修改完毕重启docker
https://dev.aliyun.com/search.html 查询镜像文件。
# systemctl restart docker
mysql安装须要创建在centos基础上全部在,docker中须要安装docker
# docker pull https://registry.cn-hangzhou.aliyuncs.com/moensun/centos7
查看建立的centos7镜像 docker images记录ID 3db94df3e006
# docker run -tid 3db94df3e006(查看centos7镜像 时能够看到) /usr/sbin/init
重命名容器名称
docker rename priceless_poitras mysql-master1
从新查看docker ps -a 容器名称修改完成
因为是作主从复制,那么应该建立两个容器mysql-master1 和mysql-slave2这里在建立mysql-slave2容器
(因为以前建立了mysql-slave1,此次就建立了mysql-slave2,名称本身命名都行。此次只是想写个博客,方便之后学习,也方便想学习的同窗,一主mysql-master1,一从mysql-slave2,后面搭建好的话,就能够根据本身需求搭建主主,多主多从了)
Docker文件拷贝(容器<=>docker)
# docker cp 原路径 docker容器路径(系统=》docker)
# docker cp MySQL-server-5.6.38-1.el7.x86_64.rpm mysql_master2:/root/
# docker cp docker容器路径 原路径(docker=》系统)
将以前mysql解压后的文件分别拷贝到mysql-master1和mysql-slave2
docker cp mysql-community-common-5.7.22-1.el7.x86_64.rpm mysql-master1:/root/
docker cp mysql-community-client-5.7.22-1.el7.x86_64.rpm mysql-master1:/root/
docker cp mysql-community-libs-5.7.22-1.el7.x86_64.rpm mysql-master1:/root/
docker cp mysql-community-server-5.7.22-1.el7.x86_64.rpm mysql-master1:/root/
docker cp mysql-community-server-5.7.22-1.el7.x86_64.rpm mysql-slave2:/root/
docker cp mysql-community-client-5.7.22-1.el7.x86_64.rpm mysql-slave2:/root/
docker cp mysql-community-libs-5.7.22-1.el7.x86_64.rpm mysql-slave2:/root/
docker cp mysql-community-common-5.7.22-1.el7.x86_64.rpm mysql-slave2:/root/
# docker exec -it 容器名称 /bin/bash
# docker exec -it mysql_master1 /bin/bash
开启两个远程登陆窗口,分别进去主容器和从容器
主,docker exec -it mysql_master1 /bin/bash
从,docker exec -it mysql_slave2/bin/bash
cd 到根目录
ll查看复制的mysql的rpm
安装mysql,安装mysql须要安装mysql依赖
(1)安装centos系统安装mysql依赖:
1. perl perl-Module-Build
2. autoconf
3. libaio
4. namuctl-libs
5. net-tools
yum install -y perl perl-Module-Build net-tools autoconf libaio numactl-libs
安装mysql
(2)在根目录下
rpm -ivh mysql-community-*.rpm
启动mysql
systemctl start mysqld
个人通常都会报错 看日志是磁盘没有分配大小
须要vi /etc/my.cnf中添加innodb_buffer_pool_size = 8M
若是没有报错最好
第一次启动后会有个初始化的过程,会产生root帐户的随机密码。
cat /var/log/mysqld.log | grep password
链接mysql
mysql -uroot -pkzl\(kVo-w0lg
其中(须要转义
设置从新设置密码
注意:若是只想设置简单密码须要修改两个全局参数:
mysql> set global validate_password_length=1;set global validate_password_policy=0;
set password = password(‘你的密码’)
set password = password(‘123456’)
远程登录受权
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
mysql> flush privileges;
(在主机上操做):
vi /etc/my.cnf
配置文件my.cnf
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
#不管主机仍是从机server-id不能相同
server-id = 2
port = 3306
##原先有的话就能够去掉
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
default-storage-engine = InnoDB
log-bin = mysql-bin
log-bin-index = mysql-bin.index
relay-log = mysql-relay
relay-log-index = mysql-relay.index
expire-logs-days = 10
max-binlog-size = 100M
max_binlog_cache_size = 8M
log-slave-updates = 1
binlog_cache_size = 4M
# use MIXED binlog
binlog_format = MIXED
#binlog_format = ROW
#replicate-do-db = db%.%
#replicate-ignore-db = mysql.%
# ignore tables
replicate-wild-ignore-table = mysql.%
sync_binlog = 1
relay_log_recovery = 1
log_slave_updates = 1
skip-name-resolve
sql_mode=STRICT_TRANS_TABLES
[mysqldump]
quick
max_allowed_packet = 32M
1. 建立同步复制的用户
mysql> create user 'repl'@'172.17.0.%' identified by '123456';
2. 给同步复制用户赋权
mysql> grant replication slave on *.* to 'repl'@'172.17.0.%' identified by '123456';
mysql> flush privileges;
3. 开启binlog
配置时候注意几个坑:
Replication-do-db的坑,若是多个库则使用多行Replication-do-db进行配置
Replication-ignore-db的坑,若是忽略多个库则使用多行Replication-ignore-db进行配置
4. 重启mysql
#systemctl restart mysqld
5. 链接mysql
show master status \G;
从机操做:
vi /etc/my.cnf
配置文件my.cnf
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
#不管主机仍是从机server-id不能相同
server-id = 20
port = 3306
##原先有的话就能够去掉
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
default-storage-engine = InnoDB
log-bin = mysql-bin
log-bin-index = mysql-bin.index
relay-log = mysql-relay
relay-log-index = mysql-relay.index
expire-logs-days = 10
max-binlog-size = 100M
max_binlog_cache_size = 8M
log-slave-updates = 1
binlog_cache_size = 4M
# use MIXED binlog
binlog_format = MIXED
#binlog_format = ROW
#replicate-do-db = db%.%
#replicate-ignore-db = mysql.%
# ignore tables
replicate-wild-ignore-table = mysql.%
sync_binlog = 1
relay_log_recovery = 1
log_slave_updates = 1
skip-name-resolve
sql_mode=STRICT_TRANS_TABLES
[mysqldump]
quick
max_allowed_packet = 32M
链接mysql操做:
1. Stop slave;
主从复制的最关键语句:
2. Change master to
Master_host=’172.17.0.2’,
Master_user=’repl’,
Master_password=’123456’,
Master_log_file=’mysql-bin.000001’,
Master_log_pos=120;
3. Start slave;
4.show slave status \G;
主mysql:create database db1;
从 mysql> show databases;
从mysql上建立了db1