环境介绍:
 
   采用多实例进行主从复制测试,多实例方法请参考网上其它文档,其实多实例和双服务器对于测试环境来说是一样的。
 
   当前采用3306端口进程为Master,3307端口进程为Slave.
 
   Mysql版本:
 
   mysql> select version();
 
   +-------------+
 
   | version() |
 
   +-------------+
 
   | 5.1.68 |
 
   +-------------+
 
   1 row in set (0.04 sec)
 
   配置过程如下:
 
   1.主库开启bin-log功能,配置server-id
 
   该参数在my.cnf中添加
 
   vi /data3/3306/my.cnf
 
   ……
 
   [mysqld]
 
   server-id = 1
 
   log-bin = /data3/3306/mysql-bin
 
   ……
 
   可查看命令show variables like 'log_bin'; show variableslike 'server_id';
 
   mysql> show variables like 'log_bin';
 
   +---------------+-------+
 
   | Variable_name | Value |
 
   +---------------+-------+
 
   | log_bin | ON |
 
   +---------------+-------+
 
   1 row in set (0.00 sec)
 
   mysql> show variables like 'server_id';
 
   +---------------+-------+
 
   | Variable_name | Value |
 
   +---------------+-------+
 
   | server_id | 1 |
 
   +---------------+-------+
 
   1 row in set (0.00 sec)
 
   2.在主库上创建复制授权用户
 
   mysql>grant replication slave on *.* to rep@'10.0.0.%' identified by '123456';
 
   QueryOK, 0 rows affected (0.19 sec)
 
   对所有库所有表,授权rep用户只有复制的权限。
 
   3.对数据库锁表只读
 
   mysql>flush tables with read lock;
 
   QueryOK, 0 rows affected (0.07 sec)
 
   该命令退出当前连接数据库后,锁表功能就失效。
 
   4.记录log-bin文件名和位置
 
   mysql>show master status;
 
   +------------------+----------+--------------+------------------+
 
   |File | Position |Binlog_Do_DB | Binlog_Ignore_DB |
 
   +------------------+----------+--------------+------------------+
 
   |mysql-bin.000002 | 340 | | |
 
   +------------------+----------+--------------+------------------+
 
   1row in set (0.00 sec)
 
   该命令需要在锁表后执行,生产环境中每时都有数据写入,只有确保锁表后show master status才准确。
 
   5.导出全部数据
 
   由于退出当前mysql登陆窗口,锁表功能就失效,需克隆一个会话进行全备。
 
   [root@Web01_n~]# mysqldump -B -A --events -S/data3/3306/mysql.sock|gzip >/tmp/3306mysql.sql.gz
 
   [root@Web01_n~]# ll /tmp/3306mysql.sql.gz
 
   -rw-r--r--1 root root 136573 10-29 16:14 /tmp/3306mysql.sql.gz
 
   导完库查看主库状态,确定bin-log信息没有变化
 
   mysql>show master status;
 
   +------------------+----------+--------------+------------------+
 
   |File | Position |Binlog_Do_DB | Binlog_Ignore_DB |
 
   +------------------+----------+--------------+------------------+
 
   |mysql-bin.000002 | 340 | | |
 
   +------------------+----------+--------------+------------------+
 
   1row in set (0.00 sec)
 
   注:由于我的数据库并没有设置用户名和密码,所以未指定-u -p参数。
 
   6.解除锁表
 
   退出锁表登陆窗口或使用命令 unlock tables;
 
   mysql>flush tables with read lock;
 
   QueryOK, 0 rows affected (0.00 sec)
 
   mysql>
 
   mysql>quit
 
   Bye
 
   或
 
   mysql>unlock tables;
 
   QueryOK, 0 rows affected (0.00 sec)
 
   7.从库配置文件配置
 
   [root@Web01_n3307]# netstat -plnt |grep 3307
 
   tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 11466/mysqld
 
   [root@Web01_n3307]# kill 11466
 
   [root@Web01_n3307]# netstat -plnt |grep 3307
 
   [root@Web01_n3307]# vi /data3/3307/my.cnf
 
   ……
 
   [mysqld]
 
   server-id= 2 #如果ID和master一致,slave的IO线程会起不来
 
   log-bin= /data3/3307/mysql-bin #从库上开启binlog日志功能,一般用于其它从库从这进行复制,也可不加这条命令
 
   ……
 
   [root@Web01_n3307]# mysqld_safe --defaults-file=/data3/3307/my.cnf &
 
   [4]11572
 
   [root@Web01_n3307]# 131029 16:56:10 mysqld_safe Logging to'/data3/3307/mysql_oldboy3307.err'.
 
   13102916:56:10 mysqld_safe Starting mysqld daemon with databases from/data3/3307/data
 
   [root@Web01_n3307]# netstat -plnt|grep 3307
 
   tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 11751/mysqld
 
   杀掉原先进程,修改配置并重启。重启参数使用mysqld_safe,&是后台执行。
 
   8.导入全部数据至从库
 
   解压备份的数据
 
   [root@Web01_n~]# ll /tmp/
 
   -rw-r--r--1 root root 136573 10-29 16:14 3306mysql.sql.gz
 
   [root@Web01_n~]# gzip -d /tmp/3306mysql.sql.gz #解压gz文件,并删除压缩包
 
   [root@Web01_n~]# ll /tmp/3306mysql.sql
 
   -rw-r--r--1 root root 502068 10-29 16:14 /tmp/3306mysql.sql
 
   导入数据
 
   [root@Web01_n~]# mysql -S /data3/3307/mysql.sock </tmp/3306mysql.sql
 
   9.从库设置change master语句
 
   binlog位置状态为主库show master status查看的位置状态
 
   CHANGEMASTER TO
 
   MASTER_HOST='10.0.0.237',
 
   MASTER_PORT=3306,
 
   MASTER_USER='rep',
 
   MASTER_PASSWORD='123456',
 
   MASTER_LOG_FILE='mysql-bin.000002',
 
   MASTER_LOG_POS=340;
 
   演示效果
 
   mysql>CHANGE MASTER TO
 
   -> MASTER_HOST='10.0.0.237',
 
   -> MASTER_PORT=3306,
 
   -> MASTER_USER='rep',
 
   -> MASTER_PASSWORD='123456',
 
   -> MASTER_LOG_FILE='mysql-bin.000002',
 
   -> MASTER_LOG_POS=340;
 
   QueryOK, 0 rows affected (0.01 sec)
 
   配置master的IP,端口,用户,密码,binlog文件名与位置。注意此处的MASTER_LOG_FILE与MASTER_LOG_POS的值为上面主库show master status得到
 
   10.从库开启slave开关
 
   mysql>start slave;
 
   QueryOK, 0 rows affected (0.00 sec)
 
   开启从库的IO线程和SQL线程。也可单独开启,START SLAVE IO_THREAD;START SLAVE SQL_THREAD;
 
   11.从库查看同步状态
 
   mysql>show slave status\G
 
   ***************************1. row ***************************
 
   Slave_IO_State: Waiting formaster to send event
 
   Master_Host: 10.0.0.237
 
   Master_User: rep
 
   Master_Port: 3306
 
   Connect_Retry: 60
 
   Master_Log_File: mysql-bin.000002
 
   Read_Master_Log_Pos: 340
 
   Relay_Log_File: relay-bin.000002
 
   Relay_Log_Pos: 251
 
   Relay_Master_Log_File: mysql-bin.000002
 
   Slave_IO_Running: Yes
 
   Slave_SQL_Running: Yes #两个YES代表主从同步线程正常
 
   Replicate_Do_DB:
 
   Replicate_Ignore_DB: mysql
 
   Replicate_Do_Table:
 
   Replicate_Ignore_Table:
 
   Replicate_Wild_Do_Table:
 
   Replicate_Wild_Ignore_Table:
 
   Last_Errno: 0
 
   Last_Error:
 
   Skip_Counter: 0
 
   Exec_Master_Log_Pos: 340
 
   Relay_Log_Space: 400
 
   Until_Condition: None
 
   Until_Log_File:
 
   Until_Log_Pos: 0
 
   Master_SSL_Allowed: No
 
   Master_SSL_CA_File:
 
   Master_SSL_CA_Path:
 
   Master_SSL_Cert:
 
   Master_SSL_Cipher:
 
   Master_SSL_Key:
 
   Seconds_Behind_Master: 0 #查看主从同步延迟,延迟大则可能需要优化
 
   Master_SSL_Verify_Server_Cert:No
 
   Last_IO_Errno: 0
 
   Last_IO_Error:
 
   Last_SQL_Errno: 0
 
   Last_SQL_Error:
 
   1row in set (0.00 sec)
 
   命令最后使用;是表格形式,使用\G是行形式。有些内容使用\G更直观。
 
   12.主从同步测试
 
   在master上创建数据库及表,看是否同步。
 
   [root@Web01_n3307]# mysql -S /data3/3306/mysql.sock -e "create database yy1028;"
 
   [root@Web01_n3307]# mysql -S /data3/3307/mysql.sock -e "show databases;"
 
   +--------------------+
 
   |Database |
 
   +--------------------+
 
   |information_schema |
 
   |mysql |
 
   |test |
 
   |test1 |
 
   |yy1028 |
 
   +--------------------+
 
   主从同步测试成功!
 
   其它:
 
   1.在主库上执行show master status;为空问题
 
   因为没有开启bin-log功能,或没有生效。在数据库里查看 show variables like '%log_bin%';看log-bin是否有on托福答案
 
   2. 控制binlog文件过期时间,在my.cnf中加入expire_logs_days = 7 参数,则7天后该binlog日志就自动删除托福答案

MySQL主从复制详细部署过程的更多相关文章

  1. Mysql学习总结(43)——MySQL主从复制详细配置

    环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205 主机名:edu-mysql ...

  2. 记一次 mysql主从复制安装配置 过程

    mysql主从复制安装配置 1.centos安装及准备 去centos官网下载相应source版本的镜像文件并在vmware中安装,安装中会遇到填写installation source,输入以下即可 ...

  3. MySQL主从复制的实现过程

    一.什么是主从复制 将主数据库中的DDL和DML操作通过二进制日志(BINLOG)传输到从数据库上,然后将这些日志重新执行(重做):从而使得从数据库的数据与主数据库保持一致. 二.主从复制的作用 1. ...

  4. Linux Centos 7 下部署 .NetCore + MySql + Redis + mssql2007 部署过程

    1.  net core 安装及运行配置 安装 1)rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-p ...

  5. MySQL 主从复制原理及过程讲解

    mysql主从原理描述,摘自老男孩. 下面简 单描述下 MySQL Replication 复制的原理及过程 . 1.在 Slave 服务器上执行 start slave 命令开启主从复制开关,主从复 ...

  6. MySQL 主从复制 详细实例讲解 与 常见错误解决方法

    一.主机ip 192.168.0.128 ,从机ip:192.168.0.130 分别测试是否能ping通对方,如果不能,请关闭防火墙或开放对应端口 二.主服务器配置 1.备份主服务器的数据 mysq ...

  7. MySQL主从复制配置部署

    配置前准备:安装MySQL   MySQL在centOS上的安装传送门: 1.集群规划 hadoop105 hadoop106 hadoop107 MySQL(master) MySQL(slave) ...

  8. Linux下MySQL主从复制(GTID)+读写分离(ProxySQL)-实施笔记

    GTID概念: GTID( Global Transaction Identifier)全局事务标识.GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文 ...

  9. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

随机推荐

  1. C 函数原型

    int add(int,int);//add two int numbers and return it--- add function prototype; int main(int argc, c ...

  2. shell command使用技巧

    1窗口可以merge 2.可以通过 control+t打开窗口

  3. Happy Number——LeetCode

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  4. zznu 1068: 进制转换

    进制应该属于程序员的看家本事了,也是大家水平告别菜鸟的一个转折,所以进制转换题目是很有意义的, 这个题目是最简单的把二进制数化简成十进制,因为输入有可能有31位,所以无法使用int或者long lon ...

  5. HTML embed标签使用方法和属性详解

    一.基本语法   代码如下:   embed src=url   说明:embed可以用来插入各种多媒体,格式可以是 Midi.Wav.AIFF.AU.MP3等等,Netscape及新版的IE 都支持 ...

  6. Spring Boot 入门

    Spring Boot自动配置 http://blog.javachen.com/2015/03/13/how-to-run-spring-boot-application.html http://b ...

  7. 你应该知道的8个Java牛人

    简单介绍一下8个Java牛人,他们为Java社区,创建了框架(framework),产品或者是写书,影响甚至改变了Java开发的方法 8.Tomcat创始人 James Duncan Davidson ...

  8. python中如何判断list中是否包含某个元素

    在python中可以通过in和not in关键字来判读一个list中是否包含一个元素 pythontab = ['p','y','t','h','o','n','t','a','b'] if 't' ...

  9. 命令行修复MBR分区

    命令行修复MBR 1.shift+F10打开命令行 2.输入:diskpart 3.输入:list disk 查看磁盘信息 4.选择你要操作的磁盘:select disk 0 5.输入:clean,清 ...

  10. 用Lighttpd做图片服务器

    http://www.lsanotes.cn/install_lighttpd 用Lighttpd做图片服务器 一.安装lighttpd所需的库文件1.安装 pcrewgetftp://ftp.csx ...