mysql主从复制配置过程

 更新时间:2020年09月08日 15:20:32   作者:tlanyan  
网站面临大流量的情况下,数据库读写成了性能瓶颈。除了使用多级缓存外,进行数据读写分离,也是提高网站承载能力重要的手段。本文介绍mysql读写分离、mysql主从复制配置过程。

主库配置

1. 配置mysql

vim /etc/my.cn
# 在文件中增加以下内容
server-id=1 # 保证server id唯一
log-bin = /var/lib/mysql/mysql-bin.log
binlog-do-db = db1 
binlog-do-db = db2

其中db1和db2是计划进行主从复制的库,如果有多个,写多行即可。配置完毕后,重启数据库: service mysqld restart

2. 添加复制用户

通过phpmyadmin,添加新用户,并授予REPLICATION SLAVE权限。或者通过root用户登录到mysql,赋予权限:

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password'

其中repl是用户名,password是该用户的密码。

3. dump数据

如果能够保证不会产生新数据,就不需要对数据库加锁。如果不能保证,则需要对每一个dump数据的数据库加锁:

use db1;
FLUSH TABLES WITH READ LOCK;

然后dump数据:

mysqldump -uroot -p db1 > db1.sql

如果有多个数据库,则重复上述过程多次。

4. 查看二进制文件位置

使用root身份登录mysql,查看master状态:

show master status;

该命令会有类似如下格式的输出:

+-----------------+-----------+----------------+------------------+
| File  | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+-----------+----------------+------------------+
| mysql-bin.00002 | 445 | db1,db2 |   |
+-----------------+-----------+----------------+------------------+
1 row in set (0.00 sec)

5. 解锁

如果导出数居前对数据库加了读锁,则需要解除:

use db1;
UNLOCK TABLES;

到此,主库配置完毕。特别需要记住 show master status 输出中的 file 和 position 的值。

从库配置

1. 新建数据库

首先在从库上建立相同名称的数据库。

2. 配置从数据库

vim /etc/my.cnf
# 在my.cnf中增加以下内容:
server-id = 2 # 保证id唯一
relay-log = /var/lib/mysql/mysql-relay-bin.log
replicate-wild-do-table = db1.%
replicate-wild-do-table = db2.%

如果同步多个数据库,replicate-wild-do-table需要写多行。配置好后,重启数据库。

3. 导入数据

将主服务器上dump出来的数据导入从服务器中:

mysql -uroot -p db1 < db1.sql

4. 配置主从同步

登录到mysql服务器,配置同步的主服务器信息:

> change master to master_host='xxx.xxx.xx.xx',
> master_user='repl',
> master_password='password',
> master_log_file='mysql-bin.00000x',
> master_log_pos=xxxx;

配置好后启动主从同步: start slave。然后通过命令查看状态:show slave status,如果成功的话slave_io_running和slave_sql_running两项应该都是yes.

测试

在主库上新增记录或者添加表等操作,几乎都能实时反映到从库上。

以上就是mysql主从复制配置过程的详细内容,更多关于mysql主从复制配置的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL统计今日生成create_time的数据量的方法小结

    MySQL统计今日生成create_time的数据量的方法小结

    create_time通常是一个用于表示某个实体或事件创建时间的字段,在数据库设计、日志记录或许多软件系统中常见,它存储的是一个日期或时间戳,记录了数据首次被创建的具体时刻,本文介绍了MySQL统计今日生成create_time的数据量的方法,需要的朋友可以参考下
    2024-08-08
  • MySQL 密码增强插件

    MySQL 密码增强插件

    这篇文章主要介绍了MySQL 密码增强插件的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • MySQL数据库完全备份与增量备份详解

    MySQL数据库完全备份与增量备份详解

    这篇文章主要介绍了MySQL数据库完全备份与增量备份详解,完全备份就是将数据库中的数据及所有对象全部备份,具体详细内容需要的朋友可以参考一下
    2022-08-08
  • mysql快速插入大量数据的正确方法

    mysql快速插入大量数据的正确方法

    在处理大量数据时如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,下面这篇文章主要给大家介绍了关于mysql快速插入大量数据的正确方法,需要的朋友可以参考下
    2024-01-01
  • MySQL中常见关键字的用法总结

    MySQL中常见关键字的用法总结

    这篇文章主要为大家详细介绍了MySQL中常见关键字的用法,例如GROUP BY、ORDER BY和LIMIT,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-09-09
  • MySQL使用distinct去掉查询结果重复的问题

    MySQL使用distinct去掉查询结果重复的问题

    这篇文章主要介绍了MySQL使用distinct去掉查询结果重复的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • CentOS7.x 安装mysql5.7 XtraBackUp备份工具使用命令详解

    CentOS7.x 安装mysql5.7 XtraBackUp备份工具使用命令详解

    这篇文章主要介绍了CentOS7.x 安装mysql5.7 XtraBackUp备份工具使用,本文给大家介绍了mysql安装过程及命令使用方法,需要的朋友可以参考下
    2022-04-04
  • 一个小时学会MySQL数据库(张果)

    一个小时学会MySQL数据库(张果)

    当前大量的网站使用php语言,那么对应的就是mysql数据库,这里就为大家分享一下MySQL数据库的相关知识,希望大家多多支持脚本之家
    2018-01-01
  • Mysql通过存储过程分割字符串为数组

    Mysql通过存储过程分割字符串为数组

    今天小编就为大家分享一篇关于Mysql通过存储过程分割字符串为数组,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高

    Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高

    这篇文章主要介绍了Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高,针对这一问题每人回答方式各不相同,下面分享下我的个人想法,需要的朋友可以参考下
    2021-08-08

最新评论