参考我的另一篇博文,tag.gz解压完并且配置完环境变量即可,暂时不要初始化
linux单机部署mysql(离线环境解压即可)-CSDN博客
可能因为版本不同,我的这个配置可能不是通用的,我安装的是mysql8.0.34版本。如果我的配置不适用于其他版本,请输入命令mysqld_multi --example, 参考官方的例子。
配置文件目录为:/etc/my.cnf? (可能不能更改,目前发现改了会报错)
配置内容如下:
[mysqld_multi]
mysqld ????= /root/soft/mysql8/bin/mysqld_safe
mysqladmin = /root/soft/mysql8/bin/mysqladmin
user ??????= root
#password ??=?[mysqld2]
socket ????= /tmp/mysql.sock2
port ??????= 3307
datadir ???= /root/soft/mysql8/data2
pid-file ??= /root/soft/mysql8/data2/mysql.pid2
user ??????= root
#一个实例占两个端口号。默认是3306和33060
mysqlx_port=33070
mysqlx_socket=/tmp/mysqlx.sock2########## 主从复制主库配置 start ##########
server-id=1
#设置需要复制的数据库
binlog-do-db=db_master_slave
#设置不要复制的数据库
binlog-ignore-db=mysql,performance_schema,information_schema,sys
#0表示读写,1表示只读
read-only=0
#设置binlog格式
binlog_format=ROW
########## 主从复制主库配置 end ##########[mysqld3]
socket ????= /tmp/mysql.sock3
port ??????= 3308
datadir ???= /root/soft/mysql8/data3
pid-file ??= /root/soft/mysql8/data3/mysql.pid3
user ??????= root
#一个实例占两个端口号。默认是3306和33060
mysqlx_port=33080
mysqlx_socket=/tmp/mysqlx.sock3########## 主从复制从库配置 start ##########
server-id=2
#开启中继日志,从主服务器上同步日志文件到本地
relay-log=relay-log-bin
#定义中继日志文件的位置和名称
relay-log-index=slave-relay-bin.index
########## 主从复制从库配置 end ##########
由于我这边部署的是两个实例,一主一从,3307和3308
mysql的解压目录 /root/soft/mysql8
分别准备3307和3308的data目录:data2和data3
cd /root/soft/mysql8
rm -r data2 data3
mkdir data2 data3
mysqld --defaults-file=/etc/my.cnf --basedir=/root/soft/mysql8 --datadir=/root/soft/mysql8/data2 --initialize-insecure
mysqld --defaults-file=/etc/my.cnf --basedir=/root/soft/mysql8 --datadir=/root/soft/mysql8/data3 --initialize-insecure
chmod -R 750 /root/soft/mysql8
mysqld_multi report
如果显示没有mysql实例,那么请重新检查配置文件内容,和目录创建赋权。
mysqld_multi start
mysqld_multi report
如果成功,会显示 is running的状态。
如果需要查看占用端口号,可输入命令如下:
ss -tunlp |grep 33
#或者netstat -tunlp |grep 33
如果启动失败,一般会出现"xxx pid ended"的错误信息,一般是配置和目录的问题。
或者也可以可查看data目录下默认的日志文件[hostname].err,这个[hostname]是动态值,就是你主机的hostname。
假如hostname是"10-23-14-11",那么命令如下
tail -111f data2/10-23-14-11.err
tail -111f data3/10-23-14-11.err
连接主节点,命令如下:
mysql -uroot -p -P3307 -S /tmp/mysql.sock2
进入mysql命令窗口后,输入命令如下:
--1.创建同步账户
create user 'slave1'@'%' identified by '1234';?
grant replication slave on *.* ?to ?'slave1'@'%';
alter user 'slave1'@'%' identified with mysql_native_password by '1234';?
flush privileges;
--2.查看主节点的binlog文件的名称和偏移量
show master status;
?
连接从节点,命令如下:
mysql -uroot -p -P3308 -S /tmp/mysql.sock3
--1.配置需要复制的主节点信息,以及binlog文件的名称和偏移量(即上面主节点查看的内容)
change master to master_host='127.0.0.1',master_port=3307,master_user='slave1',master_password='1234',master_log_file='binlog.000000',master_log_pos=0;
?--2.在从节点开启slave同步,查看同步状态
start slave;
show slave status\G;
如果 slave_io_running 和 slave_sql_running都为yes的状态,说明主从同步成功;如果是no或connecting都表示不成功,配置错误或连接不上。
进入主节点mysql窗口
--1.主节点创建数据库,并且插入数据
--drop database db_master_slave;
--show master status;
create database db_master_slave;
use db_master_slave;
create table test(id bigint primary key);
insert into test values(1);
select * from test;
进入从节点mysql窗口
--2.从节点查看数据库和插入的数据
use db_master_slave;
select * from test;
如果同步错误,具体问题具体分析,这里不展开。如果是刚开始同步,可尝试把同步的database或表删除,然后重新把这一大步再做一遍
使用mysqld_multi stop或mysqladmin命令。mysqld_multi stop有时候会不成功,具体问题具体分析
mysqld_multi stop
或
mysqladmin -uroot -p -P3307 -S /tmp/mysql.sock2 shutdown
mysqladmin -uroot -p -P3308 -S /tmp/mysql.sock3 shutdown
?如果对操作步骤依然不清晰,可参考这篇博文 ,图文较详细实现?Mysql数据库主从复制搭建与同步_mysql主主同步复制-CSDN博客