mysql集群搭建步骤linux_Linux MySQL集群搭建之主从复制

前期准备

准备两台Linux,一主,一从,具体Linux安装MySQL操作步骤:点我直达

集群搭建

注意事项

一主可以多从

一从只能一主

Linux之间要能ping通!!

关闭主从机器的防火墙策略

chkconfig iptables off

service iptables stop

主服务器配置

修改my.cnf文件

vim /etc/my.cnf

[mysqld]

# 启用二进制日志

log-bin=mysql-bin

# 服务器唯一ID,一般取IP地址最后一段

server-id=200

ca743ebb54bdb7cb3e49dd8f99501a0e.png

重启mysql服务

service mysqld restart

6e5b016e1b4d9dac23767dd6fbd5d065.png

主机给从机授备份权限slave(登陆到MySQL)

GRANT REPLICATION SLAVE ON *.* TO '从机MySQL用户名'@'从机ip' identified by '从机MySQL密码';

一般不用root账户,'%'表示所有客户端都能连,只要账户,密码都正确,此处可以用具体客户端IP代替,加强安全

8b6cc215a9193314709b6d7e0de9e471.png

刷新权限

FLUSH PRIVILEGES;

6e39af30014475bfb52079941c3ed9dd.png

查询master状态

show master status;

c158c34afa7581a30999a2f99d95a795.png

从服务器配置

修改my.cnf文件

vim /etc/my.cnf

[mysqld]

# 服务器唯一ID,一般取IP地址最后一段

server-id=201

2f5f0892fd40b36ab58cc5c1c501657a.png

重启并登陆到MySQL进行配置从服务器

change master to master_host='192.168.31.200',master_user='root',master_password='root',master_log_file='mysql-bin.000002',master_log_pos=594;

注意语句中间不要断开,master_port为mysql服务器端口号(无单引号),master_user为执行同步操作的数据库账户,此处的594就是:show master status中看到的position的值,mysql-bin.000002就是file的值

334ded4bcb8aa06b5ba01750f5ee209b.png

重启从服务器复制功能

start slave;

fef7f80d1ee2c52db687270a0eb6a907.png

检查从服务器赋值功能状态

show slave status \G

注意:Slave_IO_Running: Yes、Slave_SQL_Running: Yes必须都为yes才代表成功!!

d7d890c0a232bc3266b7a3692cbc1af4.gif

搞定!!!

主从复制演示

主:192.168.31.200;从:192.168.31.201

97b2589636db1bd7469ffc2336fd0a7c.gif

注意事项

如果linux中一台配置好mysql的话,克隆出第二台的话,要将auto.cnf删除,二台mysql的uuid不能相同!!!,要不然主从复制出问题

5f760d89b2b7e034654c01ce0d3de484.png

设置从服务器只读模式

常见现象

在我们搭建好主从服务器后,会发现一个问题,主服务器上的数据,可以同步给从服务器;但是在从服务器中添加数据时,不会同步至主服务器,这样子会造成一些垃圾数据,此时我们需要将从库设置为只读模式。

解决方法

演示如下:

mysql> set global read_only=1;

Query OK, 0 rows affected (0.00 sec)

#set global read_only=0 为取消普通账号的只读模式

授权普通MySQL测试账号

mysql> grant select,insert,update,delete on s18.* to 'test'@'127.0.0.1' identifi

ed by '123456';

Query OK, 0 rows affected, 1 warning (0.00 sec)

用测试账号登陆进行删除等操作,会提示--read-only错误

mysql> delete from student where sid=14;

ERROR 1290 (HY000): The MySQL server is running with the --read-only option so i

t cannot execute this statement

mysql> insert class values(5,三年级十班);

ERROR 1290 (HY000): The MySQL server is running with the --read-only option so i

t cannot execute this statement

注意:set global read_only=1 对拥有super权限的账号是不生效的,所以在授权账号的时候尽量避免添加super权限

那么我们在做数据迁移的时候不想发生任何数据的修改,包括super权限修改也要限制。

可以用锁表:

mysql> flush tables with read lock;

Query OK, 0 rows affected (0.18 sec)

使用root账号测试:

mysql> delete from student where sid=13;

ERROR 1223 (HY000): Can't execute the query because you have a conflicting read

lock

解锁测试:

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

mysql> delete from student where sid=13;

Query OK, 0 rows affected (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值