MySQL主从结构配置

本文详细介绍了在RHEL 6.6系统上配置MySQL 5.7.17主从结构的过程,包括master和slave服务器的配置,二进制日志设置,用户授权,数据复制,以及连接建立和主从复制测试。确保主从服务器时间同步,从服务器设为只读以保障数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL主从服务器配置

一、环境说明

1、master服务器

IP:10.26.222.213

Linux:RHEL 6.6

MySQL:5.7.17

port:3306

MySQL已经运行一段时间,有部分数据

 

2、slave服务器

IP:10.26.222.212

linux:RHEL 6.6

MySQL:5.7.17

port:3306

MySQL是新建的,没有数据

 

注:master服务器的MySQL版本不能高于slave服务器的版本

 

二、master服务器配置

1、    关闭MySQL

service mysqld stop

2、    创建存放二进制日志文件夹

mkdir /logs/mysql/bin-log

chown –R mysql:mysql /logs/mysql

3、    修改/etc/my.cnf配置文件

在[mysqld]下面添加:

         server-id=1       #服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。

log_bin=/logs/mysql/bin-log/bin-log        #开启bin-log,并指定文件目录和文件名前缀。

Log_bin_index=/logs/bin-log/bin-log.index#记录二进制日志的索引

binlog_format=mixed      #设置bin-log日志文件格式为:MIXED,可以防止主键重复。

max_binlog_size= 200M         #每个bin-log最大大小,当此大小等于200M时会自动生成一个新的日志文件。一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。

binlog_cache_size= 128K        #日志缓存大小

binlog-do-db = autowork #需要同步的数据库名字,多个写多行

binlog-ignore-db= mysql #不需要同步的数据库名字,多个写多行

binlog-ignore-db= sys

binlog-ignore-db= performance_schema

log-slave-updates    #当Slave从Master数据库读取日志时更新新写入日志中,如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。

expire_logs_days=7         #设置bin-log日志文件保存的天数,此参数mysql5.0以下版本不支持。

注意:如果不定义log_bin的文件名,则会默认以hostname主机名命名,一旦主机名修改,则会因为找不见二进制文件报错。所以最好还是显示指定文件名

4、    打开MySQL

service mysqld start

进入MySQL查看是否配置成功:

mysql -u root -p

mysql> show global variables like'%log%';

5、    新建MySQL用户

新建一个具有复制权限的用户

mysql> grantreplication slave on *.* to ‘slave’@’10.26.222.212’ identified by ‘slavemysql’;

mysql> flush privileges;

 

三、slave服务器配置

1、  关闭MySQL

service mysqld stop

2、  复制数据库

因为master服务器已经运行一段时间,存在一些数据,所以需要将这部分数据复制到slave服务器的数据库。

(1)      冷拷贝

停掉master服务器数据库,然后将master服务器数据库文件拷贝到slave服务器中

scp -r root@10.26.222.213:/mysqldata/test /mysqldata/test

然后更改属主

chown -R mysql:mysql /mysqldata/test

(2)      MySQLdump

首先需要锁住master服务器的数据库,防止操作过程中数据被修改

Mysql>Flush tables with read lock;

然后master服务器另外开一个窗口使用MySQLdump命令备份数据库文件

Shell>mysqldump –u root –p test>test.sql

数据库辈分结束后解锁master服务器

Mysql> unlock tables;

在slave服务器数据库建好test数据库,将备份生成的test.sql文件拷贝到slave服务器,然后恢复(注意需要更改属主属组为mysql:mysql)

Shell>mysql –u root –p test<test.sql

3、  创建存放中继日志的文件夹

mkdir /logs/mysql/relay-log

chown –R mysql:mysql /logs/mysql

4、  修改/etc/my.cnf配置文件

在[mysqld]下面添加:

server-id=2

relay_log=/logs/mysql/relay-log/relay-log

relay_log_index=/logs/mysql/relay-log/relay-log.index

5、  打开MySQL

service mysqld start

进入MySQL查看是否配置成功:

mysql -u root -p

mysql> show global variables like'%log%';

6、  设置从库只读

set globalread_only=1;

只限定非具有SUPER权限的用户只读,具有super权限的用户如root依旧有写权限

Flush tableswith read lock;

限制所有表只读,包括super用户也不能写

 

四、建立连接

1、  在master服务器查看当前使用的二进制日志和位置

mysql> show master status;

记住file(目前操作的二进制日志文件)和position(坐标)。

2、  复制master数据库到slave

因为master服务器已经运行一段时间,存在一些数据,所以需要将这部分数据复制到slave服务器的数据库。可以采用两种方式:

(1)冷拷贝

停掉master服务器数据库,然后将master服务器数据库文件拷贝到slave服务器中

scp -r root@10.26.222.213:/mysqldata/test /mysqldata/test

然后更改属主

chown -R mysql:mysql /mysqldata/test

(2)MySQLdump

首先需要锁住master服务器的数据库,防止操作过程中数据被修改

Mysql>Flush tables with read lock;

然后master服务器另外开一个窗口使用MySQLdump命令备份数据库文件

Shell>mysqldump –u root –p test>test.sql

将备份生成的test.sql文件拷贝到slave服务器恢复,需先建好test数据库

Shell>mysql –u root –p test<test.sql

配置好主从复制结构之后需要解锁master服务器

Mysql> unlock tables;

 

3、  在slave服务器建立连接

mysql> stop slave;

mysql> change master to master_host = '10.26.222.213', master_user= 'replication', master_password = 'slavemysql', master_log_file =  'bin-log.000006', master_log_pos = 154;

mysql> start slave;

 

说明:

master_host:是master服务器的ip

master_user:是master服务器提供的用于复制的MySQL用户名

master_password:是用于复制的MySQL用户的密码

master_log_file:从哪个二进制日志开始复制

master_log_pos:从二进制日志的哪个位置开始复制

 

4、  在slave服务器查看连接是否建立成功

mysql> show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

看到这两个字段都为YES即连接建立成功。

5、  在master服务器查看到连接

mysql> show processlist\G;

五、主从复制测试

在master服务器改动数据库数据,在slave服务器可以同步看到相关数据改动,主从服务器配置成功。

 

六、注意事项

1、  主从服务器时间要同步

2、  限制从服务器只读

3、  主从复制安全

设置sync_binlog=1

事务提交立马生效到二进制日志中,防止事务记录还在缓存中,但是服务器挂了,数据就丢失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值