mysql建立项目_MySQL构建主从项目

项目环境:

系统:CentOS7.6

数据库版本: MySQL 5.7

关闭:firewalld

关闭:selinux

MySQL主从复制流程简介

1、主:记录所有改变了的数据的语句,放进masert上的binlog中;

2、从:io线程——在使用start slave之后,负责从masert上拉取binlog内容,返回io线程,最后放进自己的relay log中;

3、从:sql执行线程会读取中继日志——执行relay log中的语句。

注意:是从服务器去主服务器抓取二进制日志再放到自己的中继日志里,sql线程会一直读取自己的中继日志。

主库:192.168.1.31

准备一个库(素材)

mysql> create database test; #创建一个库用作测试

mysql> use test; #选择test库

mysql> create table emp (empno numeric(4) not null,ename varchar(10),job varchar(9),mgr numeric(4),hiredate datetime,sal numeric(7,2),comm numeric(7,2),deptno numeric(2)); #在test库里创建一张表

mysql> insert into emp values(7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20); #插入一条语句

写配置文件

[root@MySQLDB1 ~]# vim /etc/my.cnf

[mysqld]

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/mysql.sock

#symbolic-links=0

#master and slave

log-bin=mysql-bin-master

server-id=1

binlog-do-db=test

binlog-ignore-db=mysql

[mysqld_safe]

log-error=/usr/local/mysql/logs/error.log

pid-file=/usr/local/mysql/mysql.pid

[client]

socket=/usr/local/mysql/mysql.sock

重启数据库

[root@MySQLDB1 ~]# /etc/init.d/mysqld restart

登录数据库内创建用户(slave从库)授权访问

mysql> grant replication slave on *.* to slave@192.168.1.32 identified by "123456";

mysql> flush privileges; #刷新权限

mysql> select * from mysql.user where user='slave'\G; #查看一下权限

Repl_slave_priv: Y #复制的权限

mysql> show master status; #查看一下状态信息

+-------------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+-------------------------+----------+--------------+------------------+-------------------+

| mysql-bin-master.000004 | 601 | test | mysql | |

+-------------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

从库:192.168.1.32

写从库的配置文件

[root@MySQLDB2 ~]# vim /etc/my.cnf

[mysqld]

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/mysql.sock

symbolic-links=0

server-id=2

[mysqld_safe]

log-error=/usr/local/mysql/logs/error.log

pid-file=/usr/local/mysql/mysql.pid

[client]

socket=/usr/local/mysql/mysql.sock

重启数据库

[root@MySQLDB2 ~]# /etc/init.d/mysqld restart

测试登录主库的slave账号成功!

[root@MySQLDB2 ~]# mysql -uslave -p123456 -h192.168.1.31

mysql> exit;

登录身的root账号做同步

[root@MySQLDB2 ~]# mysql -uroot -p123456

mysql> stop slave; #先停止从库账号

授权master可以访问从

mysql> change master to master_host='192.168.1.31',master_port=3306,master_user='slave',master_password='123456',master_log_file='mysql-bin-master.000004',master_log_pos=601;

开启slave用户

mysql> start slave;

mysql> show slave status \G #查看同步成功了吗?

Slave_IO_Running: Yes #出现这两个说明主从同步成功了

Slave_SQL_Running: Yes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过Dockerfile手动创建MySQL 5.7主从镜像,以下是一个示例Dockerfile: ``` # 基础镜像 FROM mysql:5.7 # 设置MySQL的root用户密码 ENV MYSQL_ROOT_PASSWORD=yourpassword # 复制MySQL配置文件到镜像中 COPY ./my.cnf /etc/mysql/my.cnf # 设置容器启动时执行的命令 CMD ["mysqld"] # 在容器中创建一个新的MySQL用户 RUN mysql -e "CREATE USER 'replication'@'%' IDENTIFIED BY 'yourpassword';" # 授权主从复制权限 RUN mysql -e "GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';" # 开放MySQL默认端口 EXPOSE 3306 ``` 在上面的Dockerfile中,我们通过`ENV`命令设置了MySQL的root用户密码,通过`COPY`命令复制了MySQL配置文件到镜像中,通过`RUN`命令创建了一个新的MySQL用户,并授权主从复制权限。 在构建镜像时,可以使用以下命令: ``` docker build -t mysql57 . ``` 其中,`.`表示当前目录中的Dockerfile。 构建完成后,可以使用以下命令启动MySQL主从容器: ``` docker run -d --name mysql-master -p 3306:3306 mysql57 docker run -d --name mysql-slave -p 3307:3306 mysql57 ``` 其中,`--name`指定容器名称,`-p`指定端口映射。 启动容器后,可以使用以下命令进入MySQL主容器: ``` docker exec -it mysql-master mysql -uroot -p ``` 其中,`-it`表示交互式终端,`-uroot`表示以root用户身份登录MySQL,`-p`表示输入密码。 进入MySQL后,可以创建数据库和表,并进行数据操作。在主容器中,还需要执行以下命令,获取binlog信息: ``` mysql> show master status; ``` 在从容器中,可以使用以下命令配置主从复制: ``` CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='replication', MASTER_PASSWORD='yourpassword', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', # 这里的值根据主容器中的binlog信息修改 MASTER_LOG_POS=154; # 这里的值根据主容器中的binlog信息修改 ``` 其中,`MASTER_HOST`指定主容器的主机名或IP地址,`MASTER_USER`指定主从复制用户,`MASTER_PASSWORD`指定主从复制用户密码,`MASTER_PORT`指定主容器的端口号,`MASTER_LOG_FILE`和`MASTER_LOG_POS`指定从容器应该从哪个binlog位置开始复制数据。 最后,可以使用以下命令启动从容器的MySQL服务: ``` mysql> start slave; ``` 这样,就完成了MySQL 5.7主从复制镜像的构建和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值