• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 详解mysql学习之主从复制

详解mysql学习之主从复制

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysql,复制,主从复制等相关知识,希望本文的分享对您有所帮助
该文使用mysql5.5 centos6.5 64位

一、主从复制的作用

1、如果主服务器出现问题,可以快速切换到从服务器。

2、对与实时性要求不高或者更新不频繁的应用可以在从服务器上执行查询操作,降低主服务器的访问压力。将数据的读写进行分离从而达到负载的效果。

3、可以在从服务器进行数据备份操作,以避免备份期间对主服务器的影响。

主从复制原理:

原理解析:master服务器开启binlog日志,slave服务器通过master服务器授予的用户将master服务器产生的binlog日志读到本地并转为relaylog日志,然后执行relaylog日志。

二、搭建主从复制环境

master:192.168.6.224

slave:192.168.6.222

1、在主服务器中为从服务器设置授权用户

在主服务器中为从服务器192.168.6.222创建一个用户名为user2的用户,密码是123

mysql> grant all on *.* to user2@192.168.6.222 identified by "123";

参数解释:

grant:mysql授权关键字

*.* :所有库所有表

查看用户授权是否成功:

mysql> show grants for user2@192.168.6.222;

测试在slave服务器上使用user2能否登陆master服务器上的mysql

[root@localhost tmp]# mysql -uuser2 -p123 test -h192.168.6.224;

2、开启主服务器的bin-log日志并开设置server-id的值。

  修改主服务器的my.cnf配置文件:

[mysqld]
#开启mysql的bin-log日志
log-bin=mysql-bin
#主服务器该值设置为1
server-id    = 1

3、重置bin-log日志:mysql> reset master;

查看最新的bin-log日志状态看是否在起始位置: mysql> show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+
| 
File
             | 
Position
 | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000
001
 |      107 |              |                  |
+------------------+----------+--------------+------------------+

4、备份主数据库数据

  a、备份数据

  b、更新bin-log日志

  在这里我们使用mysqldump方式备份数据并使用 -l -F 参数直接在备份数据的时候设置读锁并更新bin-log日志

  mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';

5、将主服务器备份的数据发送到slave服务器

  [root@localhost tmp]# scp mysql_back/test.sql 192.168.6.222:/tmp/mysql_back/

6、重置slave服务器上的bin-log日志并在slave服务器中使用备份的数据

  mysql> rester master;

  [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql;

7、配置slave服务器中my.cnf参数

  a、#配置从服务器server-id =2 (如果有多台从服务器则都有一个唯一的server-id)
    server-id = 2

  b、#开启bin-log日志
    log-bin=mysql-bin

  c、#配置需要同步的主机、用户名、密码、端口号


#配置需要同步的主机
 master-host     =   192.168.6.224
# The username the slave will use for authentication when connecting
# to the master - required
 master-user     =   user2
#
# The password the slave will authenticate with when connecting to
# the master - required
 master-password =   123
#
# The port the master is listening on.
# optional - defaults to 3306
 master-port     =  3306

  d、重启mysql让配置文件生效

  [root@localhost tmp]# service mysqld restart

  如果改方式无法重启mysql服务器可以使用下面的方式

mysql> change master to master_host="192.168.6.224",
master_user="user2",
master_password="123",
master_port=3306,
master_log_file="mysql-bin.000002",master_log_pos=107;
mysql> slave start;

8、查看slave状态

mysql . row  master .bin.relaybin.bin.

Master_Log_File:代表主机上用于主备同步的日志文件名,

Read_Master_Log_Pos:代表上一次成功同步到的日志文件中的位置。

如果这两项与先前在主服务器上看到的File及Position的值不相符,则无法正确进行同步。

三、测试

1、在master服务器添加数据并查看bin-log日志状态

mysql> insert into t1 values(13);
Query OK, 1 row affected (0.02 sec)

mysql> insert into t1 values(14);
Query OK, 1 row affected (0.01 sec)

mysql> insert into t1 values(15);
Query OK, 1 row affected (0.01 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |      656 |              |                  |
+------------------+----------+--------------+------------------+

2、查看slave同步状态

mysql> show slave status
\G;*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.6.224
                  Master_User: user2
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 656
               Relay_Log_File: localhost-relay-bin.000002
                Relay_Log_Pos: 802
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

在这里可以看到主服务器的Postion与从服务器的Read_Master_Log_Pos值相等且Slave_IO_Running,Slave_SQL_Running值都是 Yes 。这样mysql的主从配置成功。

四、主从复制常用命令

1、start slave #启动复制线程

2、stop slave #停止复制线程

3、show slave status #查看从数据库状态

4、show master logs;#查主数据库有哪些bin-log日志

5、change master to #动态改变到主服务器的配置

6、show processlist;#查看从数据库的运行进程

以上就是详解mysql学习之主从复制的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05mysql存储引擎(二)_MySQL
  • 2018-12-05浅谈开启magic_quote_gpc后的sql注入攻击与防范
  • 2018-12-05MySQL单表多关键字模糊查询的实现方法
  • 2018-12-05关于启动面的详细介绍
  • 2017-05-11解析mysql中如何获得数据库的大小
  • 2018-12-05什么是MySQL索引?【详解】
  • 2018-12-05详解mysql客户端授权后连接失败的问题的解决办法
  • 2017-05-11Mysql 原生语句中save or update 的写法汇总
  • 2018-12-05将mater库中的系统存储过程批量生成*.sql文件 通用且非常实用
  • 2018-12-05MSSQL MySQL 数据库分页(存储过程)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql缓冲和缓存设置详解
    • 总结关于mysql数据分组用法总结
    • linux系统用户管理与grep正则表达式详解
    • mysql创建数据表时指定默认值教程
    • MySQL之-CentOS6.5_x64安装配置drbd8.4.2的示例代码
    • master and slave have equal MySQL server UUIDs 解决方法
    • linux mysql忘记密码的多种解决或Access denied for user 'root'@'localhost'
    • mysql进阶(十五) mysql批量删除大量数据
    • Hbase多版本使用技巧
    • 什么是SQL注入?带你从零开始认识SQL注入

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有