mysql(mariadb)配置主从

  • 开启多个服务

# 创建环境,多个环境对应多个mysql服务,准本多个环境进行测试
nix-shell -p mariadb mariadb-client neovim git
# 初始化数据库
mysql_install_db --datadir=/home/jcleng/db-conf/db0
# 配置my.cnf(文件见末尾), 启动
mysqld --defaults-file=/home/jcleng/db-conf/db0/my.cnf &
# 重设密码
mysql --defaults-file=/home/jcleng/db-conf/db0/my.cnf
# 进入mysql控制台之后输入
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
exit;
  • 配置文件my.cnf

# 需要修改配置文件-0/-1/-2依次递增,不能重复,端口,套接字等
[client]
port            = 3370
socket          = /tmp/mariadb1058-0.sock

[mysqld]
# 服务端口
port            = 3370
bind-address    = 0.0.0.0
# 开启log_bin
log_bin         = ON
# 设置日志三种格式:STATEMENT、ROW、MIXED 。
binlog_format   = mixed
# 套接字文件
socket          = /tmp/mariadb1058-0.sock
# 依次递增
server_id       = 2
# 数据目录
datadir         = /home/jcleng/db-conf/db0
# slow_query_log  = 1
# 慢查询时间 超过1秒则为慢查询
# long_query_time = 2
# slow_query_log_file = /tmp/mariadb1058slow-0.log
# user = mysql
[mysqld_safe]
# log-error=/tmp/mariadb1058-0.log
# pid-file=/tmp/mariadb1058-0.pid
  • 开始配置主从

# 进入主服务器查看是否开启log_bin
mysql --defaults-file=/home/jcleng/db-conf/db0/my.cnf
# 输入sql,显示log_bin为ON
show variables like 'log_%';
# 查看主库状态,获取到File名称,以及Position值
show master status;

# 进入从服务器,然后连接主服务器
mysql --defaults-file=/home/jcleng/db-conf/db1/my.cnf
# 输入sql, ON.000001就是File名称, 321就是Position值(或者直接设置为0); 提示Query OK,
change master to master_host='127.0.0.1',master_port=3370,master_user='root',master_password='123456',master_log_file='ON.000001',master_log_pos=321;

# 启动从服务器复制功能,提示Query OK,
start slave;
# 检查主从状态
show slave status;