mysql集群

mysql集群

1.主从复制原理

 1)mysql主(master)从(slave)复制的原理?(面试题)

  ① master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这

    些记录叫作二进制日志事件,binary log events)

  ② slave将master的binary log events拷贝到它的中继日志(relay log);

  ③ slave重做中继日志中的事件,将改变反映他自己的数据(数据重演);

2)主从配置注意点:

  主DB server 和从 DB server 数据库版本一致;

  主DB server和从 DB server数据库数据一致;

  主DB server 开启二进制日志,主DB server 和从DB server 的server_id 都必须一致。

2.主库配置文件 my.conf

1)开启主从复制

[mysqld] log-bin = mysql-bin
#指定主库 
serverid server-id=1
#记录同步的数据库,如果不指定则记录全部数据库以及同步全部数据库
binlog-do-db=db_a

2)执行SQL语句查询状态

SHOW MASTER STATUS

3.在主库创建同步用户

1)授权用户slave01使用123456 密码登入mysql

grant replication slave on *.* to 'slave01'@'ip 地址' identified by 'kgc';

2)刷新配置

flush privileges;

4.从库配置文件 my,conf

1)指定serverid,只要不复制即可,从库也只有这一个配置,其他都在

[mysqld] server-id=2

2)Navicat中执行同步数据库配置操作

CHANGE MASTER TO
master_host='127.0.0.1',
#从数据库中查询得来 (show master status;)
master_user='slave01',
master_password='123456',
master_port=3306,
master_log_file='mysql-bin.000006',
master_log_pos=1120;

3)启动slave同步

START SLAVE;

4)查看同步状态

SHOW SLAVE STATUS;

5.搭建主库

1)创建目录

mkdir /data/mysql/master01 -p
cd /data/mysql/master01
mkdir conf data 
chmod 777 * -R

2)创建配置文件

cd /data/mysql/master01/conf
vim my.conf
#在文件中写入
[mysqld]
log-bin=mysql-bin #开启二进制日志
server-id=1#服务 id,不可重复

  附注:#出现[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and 错误解决方案,在 my.cnf 配置文件中设置

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

3)创建容器

docker create --name percona-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

4)启动容器

docker start percona-master01 && docker logs -f percona-master01

5)创建同步账号以及授权打开(navicat连接)

create user 'kgc'@'%' identified by 'kgc'; grant replication slave on *.* to 'kgc'@'%'; flush privileges;

6)重新启动容器

docker restart percona-master01 && docker logs -f percona-master01

7)查看配置是否成功

  ① 查看master状态

show master status;

  ② 查看二进制日志相关的配置

show global variables like 'binlog%';

  ③ 查看server相关的配置项

show global variables like 'server%';

6.搭建从库

1)创建目录

mkdir /data/mysql/slave01
cd /data/mysql/slave01
mkdir conf data
chmod 777 * -R

2)创建配置文件

cd /data/mysql/slave01/conf
vim my.cnf

  #输入内容

[mysqld] server-id=2 #服务 id,不可重复
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

3)创建容器

docker create --name percona-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v /data/mysql/slave01/conf:/etc/my.cnf.d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23

4)启动容器

docker start percona-slave01 && docker logs -f percona-slave01

5)设置 master 相关信息(navicat 连接 mysql3307 端口)

set sql_mode = ''; set sql_mode = 'NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

  # user:主数据库名 password : 主服务器密码

   ...file pos:主数据库中的参数

CHANGE MASTER TO
master_host='192.168.115.188',
master_user='kgc',
master_password='kgc',
master_port=3306,
master_log_file='mysql-bin.000002',
master_log_pos=648;

6)启动同步

start slave;

7)查看master状态

show slave status;

8)测试

 

posted @ 2020-09-11 15:35  宋雨航哎  阅读(236)  评论(0)    收藏  举报