单机多实例mysql8.x数据库主从配置

单机配置多实例mysql8.x集群

要求: 在一台服务器上配置两个(一主一从)mysql8.X版本数据库,两台服务ip相同,端口不同

数据库版本

mysql-8.0.31-linux-glibc2.12-x86_64.tar
下载地址:https://downloads.mysql.com/archives/community/
贴上自己用的版本
在这里插入图片描述
备注:若安装其他版本可根据自己服务器配置来匹配选择

1 数据库基本安装

目录结构:

数据库安装位置目录:/usr/local/

  • 将上面压缩包导入该目录下并解压,解压命令
tar -xzvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.31-linux-glibc2.12-x86_64 mysql-8.0.31
  • 进入mysql-8.0.31目录
cd mysql-8.0.31

当前目录路径: /usr/local/mysql-8.0.31/

  • 创建data文件夹,并在data文件夹下创建3307,3308两个文件夹用于存放初始化的mysql
mkdir -p data/{3307,3308}
  • 进入mysql-8.0.31的bin目录初始化数据库至3307 和3308两个文件夹中
cd /usr/local/mysql-8.0.31/bin/

1.初始至3307文件夹(无密码)

./mysqld --initialize-insecure --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0.31  --datadir=/usr/local/mysql-8.0.31/data/3307

备注:# --lower-case-table-names=1未配置可能出问题
2. 初始至3308文件夹(无密码)

./mysqld --initialize-insecure --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0.31  --datadir=/usr/local/mysql-8.0.31/data/3308
  • 在3307目录下增加数据库配置文件my.cnf
vim my.cnf

添加以下内容

[client]
port = 3307
socket = /usr/local/mysql-8.0.31/data/3307/mysql.sock
default-character-set = utf8mb4

[mysqld]
port = 3307
socket = /usr/local/mysql-8.0.31/data/3307/mysql.sock
datadir = /usr/local/mysql-8.0.31/data/3307
log-error = /usr/local/mysql-8.0.31/data/3307/error.log
pid-file = /usr/local/mysql-8.0.31/data/3307/mysql.pid
character-set-server = utf8mb4
lower_case_table_names = 1
autocommit = 1
  • 在3308目录下增加数据库配置文件my.cnf
vim my.cnf

添加以下内容

[client]
port = 3308
socket = /usr/local/mysql-8.0.31/data/3308/mysql.sock
default-character-set = utf8mb4

[mysqld]
port = 3308
socket = /usr/local/mysql-8.0.31/data/3308/mysql.sock
datadir = /usr/local/mysql-8.0.31/data/3308
log-error = /usr/local/mysql-8.0.31/data/3308/error.log
pid-file = /usr/local/mysql-8.0.31/data/3308/mysql.pid
character-set-server = utf8mb4
lower_case_table_names = 1
autocommit = 1
  • /usr/local/mysql-8.0.31 /bin目录下根据对应的配置文件分别启动两个数据库服务
./mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/data/3307/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/data/3308/my.cnf &

2 启动数据库并修改密码

  • /usr/local/mysql-8.0.31 /bin目录下测试数据库启动,测试3307端口数据库
./mysql -uroot -p -P3307 -h127.0.0.1
  • 无密码进入后修改密码 (修改root用户的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己的密码';
  • 授权root用户来自于任何主机的权限
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '自己的密码';
  • /usr/local/mysql-8.0.31 /bin目录下测试数据库启动测试3308端口数据库
./mysql -uroot -p -P3308 -h127.0.0.1
  • 无密码进入后修改密码 (修改root用户的密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己的密码';
  • 授权root用户来自于任何主机的权限
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '自己的密码';

3 对外放个3307和3308两个端口

sudo firewall-cmd --zone=public --add-port=3307/tcp --permanent
sudo firewall-cmd --zone=public --add-port=3308/tcp --permanent
sudo firewall-cmd --reload

4 使用navicat或其他外部连接器链接服务器两个数据库进行测试

在这里插入图片描述
在这里插入图片描述

5 开始主从配置(3307端口数据库作为主数据库,3308端口作为从数据库)

  • 修改3307文件夹下的my.cnf文件
cd /usr/local/mysql-8.0.31/data/3307
vim my.cnf

增加以下配值(server-id唯一就行)

log-bin = mysql-bin
server-id = 3307

最终的配置内容

[client]
port = 3307
socket = /usr/local/mysql-8.0.31/data/3307/mysql.sock
default-character-set = utf8mb4

[mysqld]
port = 3307
socket = /usr/local/mysql-8.0.31/data/3307/mysql.sock
datadir = /usr/local/mysql-8.0.31/data/3307
log-error = /usr/local/mysql-8.0.31/data/3307/error.log
pid-file = /usr/local/mysql-8.0.31/data/3307/mysql.pid
character-set-server = utf8mb4
lower_case_table_names = 1
autocommit = 1

log-bin = mysql-bin
server-id = 3307
  • 修改3308文件夹下的my.cnf文件
cd /usr/local/mysql-8.0.31/data/3308
vim my.cnf

增加以下配值(server-id唯一就行)

server-id = 3308

最终的配置内容

[client]
port = 3308
socket = /usr/local/mysql-8.0.31/data/3308/mysql.sock
default-character-set = utf8mb4

[mysqld]
port = 3308
socket = /usr/local/mysql-8.0.31/data/3308/mysql.sock
datadir = /usr/local/mysql-8.0.31/data/3308
log-error = /usr/local/mysql-8.0.31/data/3308/error.log
pid-file = /usr/local/mysql-8.0.31/data/3308/mysql.pid
character-set-server = utf8mb4
lower_case_table_names = 1
autocommit = 1

server-id = 3308
  • 上述文件保存并退出。

6 主从数据库配置连接

  • 通过章节2中的方式登录主数据库
./mysql -uroot -p -P3307 -h127.0.0.1
  • 主数据库服务器进入后创建用于复制的账户并授予相应的权限:
CREATE USER 'copy'@'%' IDENTIFIED BY '自己的密码';
GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%';
FLUSH PRIVILEGES;
  • 主数据库服务器重置偏移量:
reset master;
  • 查看主数据库matster的状态(记录file 、position两个字段的值,两个值在配置从数据库时会使用
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      157 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
  • 同样的方式登录从数据库,建立连接配置至主数据库
./mysql -uroot -p -P3308 -h127.0.0.1
  • 从数据库服务器进入后建立连接
CHANGE MASTER TO
    MASTER_HOST = '服务器ip',
    MASTER_PORT = 3307,
    MASTER_USER = 'copy',
    MASTER_PASSWORD = 'copy用户的密码',
    MASTER_LOG_FILE = 'mysql-bin.000001(前面说的主服务器file字段的值)',
    MASTER_LOG_POS = 157(前面说的主服务器position字段的值);
  • 启动从服务器
start slave;
  • 查看从服务器与主服务器的连接状态
SHOW SLAVE STATUS\G

对应的两个均为Yes即配置成功,Slave_IO_Running不为Yes是主服务器连接存在问题,Slave_SQL_Running不为Yes则表示从服务器存在问题。初始解决方案可以通过在主服务器执行reset master; 从服务器分别执行stop slave; reset slave;命令后,重新配置

CHANGE MASTER TO
    MASTER_HOST = '服务器ip',
    MASTER_PORT = 3307,
    MASTER_USER = 'copy',
    MASTER_PASSWORD = 'copy用户的密码',
    MASTER_LOG_FILE = 'mysql-bin.000001(前面说的主服务器file字段的值)',
    MASTER_LOG_POS = 157(前面说的主服务器position字段的值);

在这里插入图片描述

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建MySQL主从复制,你可以按照以下步骤进行操作: 1. 首先,拉取MySQL 8.0.34镜像并启动两个容器,一个作为主服务器,另一个作为从服务器。 2. 在主服务器上修改配置文件以启用主从复制功能。 3. 进入主服务器的MySQL实例,执行`show master status;`命令以获取主服务器的binlog文件名和位置。 4. 进入从服务器的MySQL实例,执行以下命令设置从服务器与主服务器建立连接并开始复制数据: ``` CHANGE MASTER TO MASTER_HOST = '主服务器IP地址', MASTER_USER = '主服务器用户名', MASTER_PASSWORD = '主服务器密码', MASTER_LOG_FILE = '主服务器的binlog文件名', MASTER_LOG_POS = 主服务器的binlog位置; ``` 5. 在从服务器上启动复制进程:`START SLAVE;`。 6. 检查主从复制的状态:`SHOW SLAVE STATUS\G;`。确保`Slave_IO_Running`和`Slave_SQL_Running`都显示为"YES"。 7. 测试主从复制效果,可以在主服务器上进行数据插入、更新或删除操作,然后在从服务器上使用SELECT语句验证数据是否同步。 需要注意的是,主从复制的搭建需要保证主从服务器之间能够相互通信,否则无法完成搭建。 希望以上步骤对你有所帮助,如果还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [docker搭建mysql8.0主备(主从复制)](https://blog.csdn.net/u010080562/article/details/120599007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值