MySQL主从复制配置

jopen 11年前

MySQL主从复制步骤很简单,仔细看,你一定懂

环境:

A: 192.168.1.1 作为master,没有数据

B: 192.168.1.2  作为slave,没有数据

一:主服务器上:

注意:mysql参数

binlog-do-db = 数据库名      (你要备份的数据库)

binlog-ignore-db = 数据库名  (你不需要备份的数据库)

如果没有在/etc/my.cnf添加以上2个参数,那就是说明备份所有数据库

(1) 确保/etc/my.cnf 中有如下参数,一般情况下都是都有的,但是以确保实验的成功率还是检查一下比较好。假如没有如下参数,自己手动添加,并重启mysql服务器

[mysqld]

log-bin=mysql-bin (启动二进制文件)

server-id=1  (服务器ID)

( 2 ) :登录mysql服务器,添加一个叫做beifen的用户,并授权给从服务器

[root@localhost ~]# mysql -uroot –p123456 登录mysql

这里需要指明一下啊 这个123456是我的mysql的密码

mysql> grant replication slave on *.* to 'beifen'@'192.168.1.2' identified by '123'; 创建 beifen用户,密码设置为123  并授权给192.168.1.2使用。

( 3 )查询主数据库的状态,并记下File和Position的值,这个在配置从数据库的时候用的到

MySQL主从复制配置

二:从服务器上

(1) 修改配置文件/etc/my.cnf 将service-id=1修改为server-id=2

(2) 并重启mysql服务器

[root@localhost ~]# mysqladmin -p123456 shutdown

[root@localhost ~]# mysqld_safe --user=mysql &

(3)登录mysql服务器

[root@localhost ~]# mysql -uroot –p123456

mysql>change master to master_host=’192.168.1.1’,master_user=’beifen’,master_password=’123’,master_log_file=’mysql-bin.000010’ ,master_log_pos=257;

( 4 ) 启动slave同步

mysql > start slave;

(5) 检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。

mysql > show slave status\G

如下图:

MySQL主从复制配置

OK! 主从复制完成,现在可以去验证了

验证方法:去主服务器上新建一个数据库,然后登录从服务器看看刚才在主服务器新建的数据库在不在

注意:如果master服务器上做主从之前已经有数据了,我们就必须要把数据库导出来  然后导入从数据库 (方法多种)

导数据之前:

进行锁表操作,不让数据进行写入动作,这么做事为了防止从数据库的原始数据和主数据库的原始数据不一致。

mysql> flush tables with read lock;

记住数据导完后要解锁:

mysql> unloclk tables;

然后用导出数据,再把导出的数据导入从数据库

但是大家有没有想到一个问题,如果从数据库有很多台,并且数据库很大的情况下,这样做的严重影响效率

最好的方法是:先将主服务器上面的数据用mysqldump命令导出来备份,然后删掉那个数据库,等搭建好主从之后,在主服务器上面新建原来的那个数据库,然后用mysql命令导入开始备份的数据、这时再去看看从服务器上面是不是有那哥数据库的数据。

如果执行MySQL主从复制配置遇到这种情况

可以用这个语句试一下

Mysql > stop slave;

Mysql > set global sql_slave_skip_counter =1 ; (让mysql跳过一次错误,继续执行)

Mysql > start slave;