mysql主从复制配置步骤经典实例

IP规划:

mysql主:192.168.0.100
mysql从:192.168.0.200

my.cnf配置

主mysql中的[mysqld]项里除了要配置相关参数以外还要配置必要的三项,现将一个最简单的示例:

[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
log-bin=master-bin
log-bin-index=master-bin.index
server-id=1

备机相应的配置如下:

[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
注:relay项配置的是中继日志和中继索引文件,如果二进制日志文件和中继日志文件名不指定,则默认使用主机名。推荐进行自定义。

重启mysql使上面的配置生效。

在主mysql上新建一个用于复制权限的用户:

mysql> grant replication slave on *.* to 'repl'@'%' identified by 'mysqls';
上面新建的为用户名repl,密码为mysqls的用户。当然出于安全考虑,可以修改句中的%号为指定主机。
Query OK, 0 rows affected (0.00 sec)
当出现上面的提示时,表示已新建用户成功。

mysql> show master status;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000004 |      224 |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
 

在备mysql上指定复制主机的相关信息,并指定要复制的二进制文件和log号

mysql> change master to master_host='192.168.0.100',master_user='repl',master_password='mysqls',master_log_file='master-bin.000004',master_log_pos=224;

master_host这一项的值建议使用主机名,因为如果遇到IP地址变更的,主机名一般不会变更,所以还是生效的。但IP变了,这里还是用的IP ,就会导致主机无法找到对应的主设备。
启用slave状态

mysql> start slave;

使用show slave status查看是否配置成功:
mysql> show slave status;

结果太多,我这里就不再复制,但主机看下面的两处,如果看到值是yes,表示已经成功。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

验证数据的同步:
主mysql上进行建库,建表,并插入测试数据:

mysql> create database repl;
mysql> create table my(id int(3),name char(10));
mysql> insert into first_tb values (001,'test');
以上操作在主机上每操作一步,都可以在备机上看到也有相应的库、表、值的增加。

干脆来个狠的,在主mysql上利用批处理,加入1000条数据:
测试数据

#!/bin/bash
for (( i=0;i<1000;i++))
do
m=`tr -dc A-Z-a-z</dev/urandom |head -c 5`
mysql -uroot -ptest repl -e"insert into my values ($i,'"$m"')"
done
在备机上:

对应上面的主机的操作,都可以查看到相应的数据。

mysql> show databases;
mysql> use repl;
mysql> show tables;
mysql> select * from my;
 

上面的操作都是在主机和备机都是在一个全新安装的环境下进行的测试。而在生产环境中要使用时,先要将双方要同步的数据库同容进行同步。而如果主数据还有应用在使用时,还要刷新数据库并销定数据库。

mysql>flush tables with read lock;

先利用mysqldump导出所有的数据,并导入到备机。
完成后,再在主mysql上解锁

mysql>unlock tables;

当然如果数据量很大的情况下,利用mysqldump处理是很慢的,这里建议使用复制物理文件进行数据同步。
同步操作和上面的相同。

上面的mysql操作同步是对所有库的完全同步,也包括mysql、information_schema这两个库的数据。如果要指定同步的数据库和忽略的数据库还要用到四个参数:

binlog-do-db=repl
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
replicate-do-db=repl
replicate-wild-ignore-table=mysql
replicate-wild-ignore-table=information_schema

当然上面的四个参数使用的时候是有讲究的,使用不当还是有风险的。回头再专门做一个总结吧!

时间: 2024-10-07 10:12:04

mysql主从复制配置步骤经典实例的相关文章

相当简单的MySQL主从复制配置教程

主从复制好处 它可以保证我们数据实时异步备份并且主服务器不受外部影响安全可靠 主从复制原理 将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的: 复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器.master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环. 这些日志可以记录发送到slave服务器的更新.当一个slaves服务器连接master服务器时,它通知ma

MySQL主从复制配置 MySQL数据自动备份配置

使用MySQL主从复制的好处有: 1.采用主从服务器这种架构,稳定性得以提升.如果主服务器发生故障,我们可以使用从服务器来提供服务: 2.在主从服务器上分开处理用户的请求,可以提升数据处理效率: 3.将主服务器上的数据复制到从服务器上,保护数据免受意外的损失: mysql服务器的主从配置,本来是一件很简单的事情,无奈不是从零开始,总是在别人已经安装好的mysql服务器之上 ,这就会牵扯到,mysql的版本,启动文件,等一些问题. 不过没关系,先问清楚两点 1.mysql配置文件my.cnf的位置

深入解析半同步与异步的MySQL主从复制配置_Mysql

简单来讲MySQL的主从复制就是一个C/S架构的应用.master可以认为是我们通常意义上所认为的server,slave可以当作是一台client.slave上的I/O线程去请求master上数据,而master验证通过slave的信息后就允许slave接入,然后进行数据变化信息的发送.一.MySQL主从复制原理这里我以MySQL5.5为例来说一下MySQL的主从复制的原理: 首先由备节点的I/O线程负责向主节点请求数据,主节点验证通过以后会由dump线程把数据发送给备用节点.备用节点的I/O

MySQL主从复制配置心跳功能介绍_Mysql

在 MySQL 主从复制时,有时候会碰到这样的故障:在 Slave 上 Slave_IO_Running 和 Slave_SQL_Running 都是 Yes,Slave_SQL_Running_State 显示 Slave has read all relay log; waiting for the slave I/O thread to update it ,看起来状态都正常,但实际却滞后于主,Master_Log_File 和 Read_Master_Log_Pos 也不是实际主上最新的

Win2003下IIS+PHP+MySQL+Zend配置步骤详解第1/2页_php技巧

一.软件的获取 1.php首先去http://www.php.net/downloads.php下载最新的PHP 5.2.0版本. 2.MySQL可以在http://dev.mysql.com/downloads/mysql/5.0.html#downloads下载到最新的5.0.xx版本. 3.Zend Optimizer可以去http://www.zend.com/free_download/optimizer下载最新的3.X.X版本. 4.phpmyadmin可以到http://www1.

Mysql主从复制配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/809419 环境:master: 192.168.240.131    Slave: 192.168.240.130 需要复制的数据库:test 1.       Master服务器启动mysql, a)         #mysql –uroot –proot b)        创建一个有复制权限的用户,只限s

linux中mysql主从配置步骤详解

一.mysql主从方式: 同步:主服务器有数据写入,存储在硬盘,记录二进制日志一份.二进制日志完整发送给从服务器记录于中继日志中,从服务器回应主服务器已收到, 异步:主服务器写入数据,存储磁盘,记录二进制日志,直接反馈客户端:至于从服务器收到与否,不予理会 mysql的复制默认为异步模式 二.配置主从服务器 1.先在两台机器上分别安装好mysql,版本需要一致,然后配置,启动 2.主服务器配置 1).查看mysql是否正常启动  netstat -nltp | grep 3306 2)修改配置文

centOS yum在线安装mysql及配置步骤详解

1.检查centOS的自带mysql yum list installed | grep mysql 2.删除centOS的自带mysql # 当结果显示为Complete!即卸载完毕    yum -y remove mysql-libs.x86_64 3.检查yum库中的mysql的版本号 yum list|grep mysql # 或者用 yum -y list mysql* 4.yum 在线安装mysql yum -y install mysql-server mysql mysql-d

CentOS6中mysql主从复制配置(注:mysql是通过yum源安装的)

mysql复制的优点主要包括以下3个方面: 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操作,降低主服务器的访问压力 3.可以在从服务器上执行备份,以避免备份期间影响主服务器的服务 注意:一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询,实时性要求高的数据仍然需要从主服务器获得 主服务器配置 我的服务器采用yum安装,如果想配置文件 设置默认编码等一些初始参数(my.cnf)(若无my.cnf, 则可cp /usr/share/m