MYSQL主从同步(复制)

MYSQL主从同步(复制)
mysql主从同步定义

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

配置主服务器

1.更改配置文件,首先检查你的主服务器上的my.cnf文件中是否已经在[mysqld]模块下配置了log-bin和server-id

[mysqld]

log-bin=mysql-bin

server-id=1

2.创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。

首先登陆mysql,然后创建一个用户名为rep,密码为123456的账户,该账户可以被192.168.253网段下的所有ip地址使用,且该账户只能进行主从同步

mysql > grant replication slave on *.* to ‘rep’@‘192.168.253.%’ identified by ‘123456’;

3.获取二进制日志的信息并导出数据库,步骤:

首先登陆数据库,然后刷新所有的表,同时给数据库加上一把锁,阻止对数据库进行任何的写操作

mysql > flush tables with read lock;

然后执行下面的语句获取二进制日志的信息

mysql > show master status;

在这里插入图片描述File的值是当前使用的二进制日志的文件名,Position是该日志里面的位置信息(不需要纠结这个究竟代表什么),记住这两个值,会在下面配置从服务器时用到。

注意:如果之前的服务器并没有配置使用二进制日志,那么使用上面的sql语句会显示空,在锁表之后,再导出数据库里的数据(如果数据库里没有数据,可以忽略这一步)

将主服务器数据导出 QQ.sql

[root@localhost backup]# mysqldump -h主服务器 -uroot -P'123' --master-data -A > QQ.sql

将QQ.sql传输到从服务器根下

 [root@localhost backup]# scp -r /QQ.sql 从服务器:/

将QQ.sql导入到数据库中

[root@localhost backup]# mysql -uroot -p123 < /QQ.sql

这时可以对数据库解锁,恢复对主数据库的操作

mysql > unlock tables;

配置从服务器

首先检查从服务器上的my.cnf文件中是否已经在[mysqld]模块下配置leserver-id

[mysqld]

server-id=2

注意上面的server-id的值都是可以改为其他值的(建议更改为ip地址的最后一个字段),如果没有上面的配置,首先关闭mysql服务器,然后添加上去,接着重启服务器

如果有多个从服务器上,那么每个服务器上配置的server-id都必须不一致。从服务器上没必要配置log-bin,当然也可以配置log-bin选项,因为可以在从服务器上进行数据备份和灾难恢复,或者某一天让这个从服务器变成一个主服务器

如果主服务器导出了数据,下面就导入该文件,如果主服务器没有数据,就忽略这一步

[root@localhost ~]# mysql -uroot -p'123456' -S /data/3306/data/mysql.sock < /server/backup/mysql_bak.2015-07-01.sql

如果从主服务器上拿过来的是压缩文件,就先解压再导入

配置同步参数,登陆mysql,输入如下信息:
复制代码

mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='replication_user_name',

-> MASTER_PASSWORD='replication_password',

-> MASTER_LOG_FILE='recorded_log_file_name',

复制代码
在这里插入图片描述启动主从同步进程

mysql > start slave;

检查状态

mysql > show slave status \G

在这里插入图片描述

上面的两个进程都显示YES则表示配置成功

二、做一个全新的主从服务器
主从全部都重新格式化
主从全部都要授权

service mysqld stop 

停止服务

rm -rf /mydata/data/

删除缓存

mysqld --initialize-insecure --datadir=/mydata/data --basedir=/app/mysql --user=mysql

重新初始化

service mysqld start 

重启服务

mysql

进入

vim /etc/my.cnf
log_bin
server_id=主机号

2.创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。

首先登陆mysql,然后创建一个用户名为rep,密码为123456的账户,该账户可以被192.168.253网段下的所有ip地址使用,且该账户只能进行主从同步

mysql > grant replication slave on *.* to ‘rep’@‘192.168.253.%’ identified by ‘123456’;

3.首先登陆数据库,然后刷新所有权限
刷新授权

flush privileges;

`使授权列表即使更新

然后执行下面的语句获取二进制日志的信息

mysql > show master status;

在这里插入图片描述配置从服务器
首先检查从服务器上的my.cnf文件中是否已经在[mysqld]模块下配置leserver-id

[mysqld]

server-id=2

配置同步参数,登陆mysql,输入如下信息:
复制代码

mysql> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='replication_user_name',

-> MASTER_PASSWORD='replication_password',

-> MASTER_LOG_FILE='recorded_log_file_name',

复制代码

如图所示:
在这里插入图片描述启动主从同步进程

mysql > start slave;

检查状态

mysql > show slave status \G

在这里插入图片描述上面的两个进程都显示YES则表示配置成功

测试就好了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值