侧边栏壁纸
博主头像
CYC的个人博客博主等级

学习使人进步

  • 累计撰写 91 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Mysql5.7集群配置

Administrator
2023-11-15 / 0 评论 / 0 点赞 / 42 阅读 / 4375 字

Mysql5.7集群配置

############集群配置#####################################

./mysqld --initialize-insecure --basedir=/data/mysql-5.7.32/ --datadir=/data/mysql-5.7.32/data/3307 --user=mysql

./mysqld --initialize-insecure --basedir=/data/mysql-5.7.32/ --datadir=/data/mysql-5.7.32/data/3308 --user=mysql

./mysqld --initialize-insecure --basedir=/data/mysql-5.7.32/ --datadir=/data/mysql-5.7.32/data/3309 --user=mysql

./mysqld --initialize-insecure --basedir=/data/mysql-5.7.32/ --datadir=/data/mysql-5.7.32/data/3310 --user=mysql



#my.cnf 

[client]
port        = 3307
socket      = /data/mysql-5.7.32/data/3307/mysql.sock
default-character-set=utf8
 
[mysqld]
port    = 3307
socket  = /data/mysql-5.7.32/data/3307/mysql.sock
datadir = /data/mysql-5.7.32/data/3307
log-error = /data/mysql-5.7.32/data/3307/error.log
pid-file = /data/mysql-5.7.32/data/3307/mysql.pid
 
character-set-server=utf8
lower_case_table_names=1
autocommit = 1

#忽略所有同步错误,保证数据同步
slave-skip-errors=all


./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3307/my.cnf &

./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3308/my.cnf &

./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3309/my.cnf &

./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3310/my.cnf &


在bin目录下登录mysql,使用命令./mysql -uroot -p -P3307 -h127.0.0.1

然后使用命令alter user 'root'@'localhost' identified by '123456'; 修改密码为123456,并使用

grant all privileges on *.* to root@'%' identified by '123456'; 命令授予远程访问,其中root指的是用户名;

并使用命令flush privileges; 刷新权限;

此时记得关闭防火墙:查看防火墙命令systemctl status firewalld ,关闭防火墙命令systemctl stop firewalld ;





主(3307)里面加入
log-bin=mysql-bin #表示启用二进制日志
server-id=3307      #表示server编号,编号要唯一
 
从(3308)里面加入
server-id=3308        #表示server编号,编号要唯一
 
从(3309)里面加入
server-id=3309        #表示server编号,编号要唯一
 
从(3310)里面加入
server-id=3310        #表示server编号,编号要唯一





首先,需要在3308的my.cnf配置文件中添加一个 “log-bin=mysql-bin” 配置信息,就像3307的配置文件一样。



然后,3307主服务器的my.cnf文件增加如下配置:

auto_increment_increment=2
auto_increment_offset=1
log-slave-updates
sync_binlog=1
3308主服务器增加如下配置:

auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
sync_binlog=1
配置说明如下:

    auto_increment_increment,控制主键自增的自增步长,用于防止Master与Master之间复制出现重复自增字段值,通常auto_increment_increment=n,有多少台主服务器,n 就设置为多少;
 
    auto_increment_offset=1设置自增起始值,这里设置为1,这样Master的auto_increment字段产生的数值是:1, 3, 5, 7, …等奇数ID
 
   注意auto_increment_offset的设置,不同的master设置不应该一样,否则就容易引起主键冲突,比如master1的offset=1,则master2的offset=2,master3的offset=3
 
   在双主模式中,log-slave-updates 配置项一定要配置,否则在master1(3307)上进行了更新数据,在master2(3308)和slave1(3309)上会更新,但是在slave2(3310)上不会更新
 
   sync_binlog表示每几次事务提交,MySQL把binlog缓存刷进日志文件中,默认是0,最安全的是设置为1
   
   
   
   
./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3307/my.cnf &
 
./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3308/my.cnf &
 
./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3309/my.cnf &
 
./mysqld_safe --defaults-file=/data/mysql-5.7.32/data/3310/my.cnf &
   


然后,使用命令 ./mysql -uroot -p -P3307 -h127.0.0.1 和./mysql -uroot -p -P3308 -h127.0.0.1  
进入3307和3308主机。
grant replication slave on *.* to 'copy'@'%' identified by 'ws12345678';    创建复制的账号并授权。


然后再以同样的方式启动3309和3310两个从服务器,并且在这四个服务器上使用如下命令重置服务:

stop slave;
reset slave;
reset master;


设置从服务器3308、3309,他们的主均为3307,即在3308和3309上执行如下操作:
change master to master_host='192.168.1.251',master_user='copy',master_password='123456',master_port=3307, master_log_file='mysql-bin.000001',master_log_pos=154;
#temp
change master to master_host='192.168.18.13',master_user='slave2',master_password='ws12345678',master_port=33109, master_log_file='mysql-bin.000005',master_log_pos=3365999;
设置从服务器3307、3310,他们的主均为3308,即在3307和3310上执行如下操作:
change master to master_host='192.168.1.251',master_user='copy',master_password='123456',master_port=3308, master_log_file='mysql-bin.000001',master_log_pos=154;	

然后在这四台服务器上mysql命令行执行 start slave;

然后我们使用命令 show slave status \G命令查看各从数据库的主从关系;比方说我们看看3307的:



这样,就配置好了,在连接数据库,不仅是3307,在3308中建表,插入删除修改数据,其他的库都相应的会同样的改变。

以上即为数据库集群的配置。。。
问题解决

mysqlbinlog -v --stop-position=3372279  /var/lib/mysql/mysql-bin.000004 > /tmpbinlog.log


#查看binlog日志
mysqlbinlog --base64-output=decode-rows -v binlog.000005 > 0001.sql


跳过指定数量的事务
mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1        #跳过一个事务,1代表事务id
mysql>slave start

0

评论区