专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

mysql主从复制系列(1)搭建多个mysql实例环境

搭建多个mysql实例(均使用Ubuntu18虚拟机,mysql5.7)

两种方式

1、 不同主机上分别创建mysql服务,一台机一个mysql。【这个最简单,推荐实用,只要在不同主机上装mysql服务就行,可以参考这篇快速apt-get安装mysql
2、 同一主机上,同一mysql服务上建立多个实例【这个配置搭建比较复杂,不推荐】

方法1

在每台主机上安装完mysql后,开始进行远程访问配置(这一块主要讲远程配置搭建,具体的主从复制配置留在后面)

一些基本信息

主库 192.168.5.149:3308 user:ying password:newman123

从库1 192.168.5.150:3308

从库2 192.168.5.151:3308

查看用户信息

select user, host from mysql.user;

确保用户的host是 % (表示可以任意主机以该用户身份登录mysql)

update mysql.user set host='%' where user='[用户名]';
flush privileges;

54_1.png

修改 /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 改 0.0.0.0 或者 注释掉

54_2.png

重启 systemctl restart mysql

开放3306端口,服务器需要配置安全组规则,有防火墙需要开放3306

sudo ufw allow 3308

或者直接关了

sudo ufw disable

从库1为例,登录到主库

54_3.png

成功登录

方法2

以创建三个MySQL实例为例,分别对应端口为3306、3307、3308

默认用apt-get 的方式安装好了mysql5.7

停止MySQL并禁止其自动启动

sudo systemctl stop mysql 
sudo systemctl disable mysql

创建目录&文件

一张图表示文件创建结构

54_4.png

数据存放位置

sudo mkdir -p /data/mysql/{3306,3307,3308}

pid 存放目录

sudo mkdir -p /data/mysql/pid

日志文件

sudo touch /data/mysql/error.log

修改目录权限

sudo chown -R mysql:mysql /data

编辑配置文件 ###

sudo cp /etc/mysql/my.cnf /etc/mysql/3306.cnf
sudo cp /etc/mysql/my.cnf /etc/mysql/3307.cnf
sudo cp /etc/mysql/my.cnf /etc/mysql/3308.cnf
[mysqld]
port=3306
datadir=/data/mysql/3306/
socket=/tmp/mysql3306.sock
symbolic-links=0

[mysqld_safe]
log-error=/data/mysql/3306.log
pid-file=/data/mysql/pid/3306.pid

[client]
port=3306
socket=/tmp/mysql3306.sock

54_5.png

-—————————————————

[mysqld]
port=3307
datadir=/data/mysql/3307/
socket=/tmp/mysql3307.sock
symbolic-links=0

[mysqld_safe]
log-error=/data/mysql/3307.log
pid-file=/data/mysql/pid/3307.pid

[client]
port=3307
socket=/tmp/mysql3307.sock

-—————————————————

[mysqld]
port=3308
datadir=/data/mysql/3308/
socket=/tmp/mysql3308.sock
symbolic-links=0

[mysqld_safe]
log-error=/data/mysql/3308.log
pid-file=/data/mysql/pid/3308.pid

[client]
port=3308
socket=/tmp/mysql3308.sock

-—————————————————

编辑 my.cnf文件

使用 mysqld_multi 管理多个实例

sudo vim /etc/mysql/my.cnf

[mysqld_multi]
mysqld=/usr/bin/mysqld_safe
mysqladmin=/usr/bin/mysqladmin
user=root
# 需要注意,是pass而不是password,用于后面使用stop时使用,可修改为你自定义的密码
pass=123456

[mysqld3306]
port=3306
server-id=3306
datadir=/data/mysql/3306/
log-bin=/data/mysql/3306/mysql-bin
pid-file=/data/mysql/pid/3306.pid
socket=/tmp/mysql3306.sock
log-error=/data/mysql/error.log
skip-external-locking

[mysqld3307]
port=3307
server-id=3307
datadir=/data/mysql/3307/
log-bin=/data/mysql/3307/mysql-bin
pid-file=/data/mysql/pid/3307.pid
socket=/tmp/mysql3307.sock
log-error=/data/mysql/error.log
skip-external-locking

[mysqld3308]
port=3308
server-id=3308
datadir=/data/mysql/3308/
log-bin=/data/mysql/3308/mysql-bin
pid-file=/data/mysql/pid/3308.pid
socket=/tmp/mysql3308.sock
log-error=/data/mysql/error.log
skip-external-locking

[mysql]
no-auto-rehash 

给mysqld目录访问权限

sudo vim /etc/apparmor.d/usr.sbin.mysqld

添加

/data/mysql/ r,
/data/mysql/** rwk,

54_6.png

sudo service apparmor restart

通过配置文件初始化3306、3307、3308实例

sudo mysqld --defaults-file=/etc/mysql/3306.cnf --initialize-insecure --user=mysql --explicit_defaults_for_timestamp
sudo mysqld --defaults-file=/etc/mysql/3307.cnf --initialize-insecure --user=mysql --explicit_defaults_for_timestamp
sudo mysqld --defaults-file=/etc/mysql/3308.cnf --initialize-insecure --user=mysql --explicit_defaults_for_timestamp

修改目录权限为本机用户

sudo chown -R <用户名>:root /data

启动命令

mysqld_multi start 3306-3308

查看实例是否运行

mysqld_multi report

54_7.png

设置root密码

mysqladmin -u root password [password] -S /tmp/mysql3306.sock
mysqladmin -u root password [password] -S /tmp/mysql3307.sock
mysqladmin -u root password [password] -S /tmp/mysql3308.sock

尝试连接实例

mysql -u root -p -S /tmp/mysql3306.sock
mysql -u root -p -S /tmp/mysql3308.sock
mysql -u root -p -S /tmp/mysql3307.sock

54_8.png

远程登录mysql

在配置主从复制时,即便是在同一主机下,也要用到远程登录

查看用户信息

select user, host from mysql.user;

确保用户的host是 % (表示可以任意主机以该用户身份登录mysql)

update mysql.user set host='%' where user='[用户名]';flush privileges;

54_9.png

修改 /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 改 0.0.0.0 或者 注释掉

54_10.png

重启 systemctl restart mysql

开放3306端口,服务器需要配置安全组规则,有防火墙需要开放3306

sudo ufw allow 3306

测试登录

mysql -h localhost -u slave3 -p -P 3306 -S /tmp/mysql3306.soc

54_11.png

文章永久链接:https://tech.souyunku.com/29426

未经允许不得转载:搜云库技术团队 » mysql主从复制系列(1)搭建多个mysql实例环境

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们