太原网站制作企业,广告设计专业英语,程序员网站建设,什么网站做优化最好?一、安装mysql5.7.30主库1.准备docker和docker-compose环境2.创建yml目录#xff0c;相关数据挂载#yml存放的目录mkdir -p /root/docker-compse/mysql#主库的/var/lib/mysql 数据的挂载目录mkdir -p /data/mysql5matser#不用slave 了#xff0c;用replication的缩写replic , …一、安装mysql5.7.30主库1.准备docker和docker-compose环境2.创建yml目录相关数据挂载#yml存放的目录mkdir -p /root/docker-compse/mysql#主库的/var/lib/mysql 数据的挂载目录mkdir -p /data/mysql5matser#不用slave 了用replication的缩写replic , slave 是奴隶的意思在美国有种族歧视的之嫌#从库的/var/lib/mysql 数据的挂载目录mkdir -p /data/mysql5replic3.创建网络空间配置时区docker network create mysql-replicecho Asia/Shanghai /etc/timezone4.提前准备好所需镜像docker pull mysql:5.7.305.主库/root/docker-compse/mysql/master.ymlversion: 3.7services:#主库服务名称mysql-master:#容器名称container_name: mysql-master#镜像名称 提前 docker pull mysql:5.7.30 不然会很慢image: mysql:5.7.30#docker 重启后容器重启restart: always#选择自建bridge网络networks:- mysql_replic#mysql 参数配置 my.cnf里面的配置这里简单配置下可以配置volumes /etc/my.cnf:/etc/my.cnfcommand: --character-set-serverutf8mb4 --collation-serverutf8mb4_general_ci --server-id1 --log-binmysql-binenvironment:- TZAsia/Shanghai#默认密码配置 123456 修改成您的密码- MYSQL_ROOT_PASSWORD123456ports:- 3307:3306volumes:- /etc/localtime:/etc/localtime- /etc/timezone:/etc/timezone#挂载目录 /var/lib/mysql 是mysql的数据- /data/mysql5matser:/var/lib/mysql#配置网络networks:mysql_replic:name: mysql_replic#强制使用已经创建好的网络不然报错external: true6.启动主库docker-compose -f master.yml up -d7.进入容器登录主库#进入dockerdocker exec -it mysql-master bash#进入docker的mysqlmysql -uroot -p#输入密码8.创建同步账号replic,授权同步权限,查看主库状态信息-- 创建同步账号CREATE USER replic% IDENTIFIED BY 123456;-- 授权权限GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO replic%;-- 查看主节点状态show master status;-- 数据的结果-- --------------------------------------------------------------------------------- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |-- --------------------------------------------------------------------------------- | mysql-bin.000003 | 619 | | | |-- -------------------------------------------------------------------------------二、安装mysql5.7从库同步主库数据1.从库/root/docker-compse/mysqlreplic.ymlversion: 3.7services:#从库服务名称mysql-replic:#容器名称container_name: mysql-replic#镜像名称 提前 docker pull mysql:5.7.30 不然会很慢image: mysql:5.7.30#docker 重启后容器重启restart: always#选择自建bridge网络networks:- mysql_repliccommand: --character-set-serverutf8mb4 --collation-serverutf8mb4_general_ci --server-id2 --log-binmysql-slave-bin --relay_logep-mysql-relay-bin --read_only1environment:#时区- TZAsia/Shanghai#默认密码配置- MYSQL_ROOT_PASSWORD123456volumes:- /etc/localtime:/etc/localtime- /etc/timezone:/etc/timezone#挂载目录 /var/lib/mysql 是数据盘- /data/mysql5replic:/var/lib/mysqlports:- 3308:3306#配置网络networks:mysql_replic:name: mysql_replic#强制使用已经创建好的网络不然报错external: true2.启动从库docker-compose -f replic.yml up -d#不用管 提醒#WARNING: Found orphan containers (mysql-master) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.3.进入容器登录从库#进入容器docker exec -it mysql-replic bash#登录mysqlmysql -uroot -p#输入密码4.同步脚本-- 查看从库状态show slave status ;-- 第一次安装执行会返回-- Empty set (0.00 sec)-- 同步设置change master to master_hostmysql-master, master_userreplic, master_password123456, master_port3306, master_log_filemysql-bin.000003, master_log_pos619;-- 启动同步start slave;-- 查看同步结果show slave status \G;-- *************************** 1. row ***************************-- Slave_IO_State: Waiting for master to send event-- Master_Host: mysql-master-- Master_User: replic-- Master_Port: 3306-- Connect_Retry: 60-- Master_Log_File: mysql-bin.000003-- Read_Master_Log_Pos: 619-- Relay_Log_File: ep-mysql-relay-bin .000002-- Relay_Log_Pos: 320-- Relay_Master_Log_File: mysql-bin.000003-- Slave_IO_Running: Yes-- Slave_SQL_Running: Yes-- Replicate_Do_DB:-- Replicate_Ignore_DB:-- Replicate_Do_Table:-- Replicate_Ignore_Table:-- Replicate_Wild_Do_Table:-- Replicate_Wild_Ignore_Table:-- Last_Errno: 0-- Last_Error:-- Skip_Counter: 0-- Exec_Master_Log_Pos: 619-- Relay_Log_Space: 532-- Until_Condition: None-- Until_Log_File:-- Until_Log_Pos: 0-- Master_SSL_Allowed: No-- Master_SSL_CA_File:-- Master_SSL_CA_Path:-- Master_SSL_Cert:-- Master_SSL_Cipher:-- Master_SSL_Key:-- Seconds_Behind_Master: 0-- Master_SSL_Verify_Server_Cert: No-- Last_IO_Errno: 0-- Last_IO_Error:-- Last_SQL_Errno: 0-- Last_SQL_Error:-- Replicate_Ignore_Server_Ids:-- Master_Server_Id: 1-- Master_UUID: b2353e18-8d00-11ea-9de4-0242ac170002-- Master_Info_File: /var/lib/mysql/master.info-- SQL_Delay: 0-- SQL_Remaining_Delay: NULL-- Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates-- Master_Retry_Count: 86400-- Master_Bind:-- Last_IO_Error_Timestamp:-- Last_SQL_Error_Timestamp:-- Master_SSL_Crl:-- Master_SSL_Crlpath:-- Retrieved_Gtid_Set:-- Executed_Gtid_Set:-- Auto_Position: 0-- Replicate_Rewrite_DB:-- Channel_Name:-- Master_TLS_Version:5.成功标志-- 表示同步成功-- Slave_IO_Running: Yes-- Slave_SQL_Running: Yes三、检查主从同步1.进入主库创建一个数据库create database test;show databases;-- 输出-- ---------------------- | Database |-- ---------------------- | information_schema |-- | mysql |-- | performance_schema |-- | sys |-- | test |.主库创建只读账号供从库只读使用grant select on *.* TO view% identified by 123456;-- 从库修改数据会--1290 - The MySQL server is running with the --read-only option so it cannot execute this statement3.进入从库查看show databases;-- 输出-- ---------------------- | Database |-- ---------------------- | information_schema |-- | mysql |-- | performance_schema |-- | sys |-- | test |四、卸载mysql主从1.删除容器#删除从库容器docker-compose -f replic.yml down#删除主库容器docker-compose -f master.yml down2.删除数据(谨慎使用此命令)rm -rf /data/mysql5matserrm -rf /data/mysql5replicPS:如果疑问留言如果对您有用请点赞支持下期预告 springboot mybatis druid 实现读写分离参考文档