linux下mysql设置主从_Linux 下MySQL 互为主从设置

MySql互为主从复制,其中的一台发生变化,另外一台也马上发生变化,并且都能向外提供服务。 这就比使用主从复制具有更好的性能。

server1:192.168.1.10

server2: 192.168.1.20

1.创建用户并授权

server1:

mysql -u root -p

输入mysql的root密码

mysql> GRANT ALL PRIVILEGES ON *.* TO 'SLAVEROOT'@'192.168.1.20' IDENTIFIED BY 'SLAVEROOT';

server2:

mysql -u root -p

输入mysql的root密码

mysql> GRANT ALL PRIVILEGES ON *.* TO 'SLAVEROOT'@'192.168.1.10' IDENTIFIED BY 'SLAVEROOT';

2.修改Mysql的主配置文件

配置文件一般放在/etc/my.cnf这个位置,实际就根据安装的具体情况了;

server1:[mysqld]

server-id = 10

log-bin = mysql-bin

replicate-do-db = 数据库名 //需要同步的数据库

auto-increment-increment = 2 //每次增长2

auto-increment-offset = 1 //设置自动增长的字段的偏移量,即初始值为1启动Mysql服务:

修改完成过后重启:

# service mysqld restart

军哥LNMP mysql管理方法:

/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}

server2:[mysqld]

server-id = 20

log-bin = mysql-bin

replicate-do-db = 数据库名 //需要同步的数据库

auto-increment-increment = 2 //每次增长2

auto-increment-offset = 2 //设置自动增长的字段的偏移量,即初始值为2

启动Mysql服务:

修改完成过后重启:

# service mysqld restart

军哥LNMP mysql管理方法:

/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}

注:二都只有server-id不同和 auto-increment- offset不同

auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两台服务器,所以值设为2。

如果是三台服务器,每一台auto-increment-increment后面设为3,偏移量,初始值也就设为了1,2,3;

4.为了让两个数据库一样,我们备份其中一个数据库,然后在另一个数据库上恢

复,这样是两个数据库一开始都是一样的。

在server1上操作:# mysqldump --databases 数据库名 > /tmp/数据库名.sql

在server2上操作:

创建一个与上面同名的空数据库# mysql

> CREATE DATABASE 数据库名;

>\q

# scp 192.168.1.108:/tmp/数据库名.sql ./

# mysql -uroot -p 数据库名 < /tmp/数据库名.sql

5.然后两个服务器相互通告二进制日志的位置并启动复制功能:

在server1上:

mysql>CHANGE MASTER TO

MASTER_HOST='192.168.1.20',

MASTER_USER='SLAVEROOT',

MASTER_PASSWORD='SLAVEROOT';

mysql > START SLAVE;

在server2上:

mysql>CHANGE MASTER TO

MASTER_HOST='192.168.1.10',

MASTER_USER='SLAVEROOT',

MASTER_PASSWORD='SLAVEROOT';

mysql > START SLAVE;

6.查看并验证是否成功

mysql > SHOW SLAVE STATUS\G;Slave_IO_Running: Yes

Slave_SQL_Running: Yes

这两行显示为这样就代表成功了,在使用中可能用到哪些管理命令呢?做一下记录

附:

1.同步管理

开始同步

mysql> START SLAVE;

停止同步

mysql> STOP SLAVE;

2.删除同步账号

mysql>use mysql;

mysql>delete from user where user='SLAVEROOT' and host='你的对应IP地址';

3.清除同步信息

首先需要停止同步,然后使用以下代码:

mysql> reset slave all;

4.如果日志文件太多,或者过大需要清理

首先确认哪个数据文件是正在使用的

mysql>show master status\G ;

mysql>show slave status\G ;

或者查看当前的日志文件

mysql>show binary logs;

然后删除现在使用日志之前的日志:

mysql>PURGE MASTER LOGS TO'mysql-bin.000016';

或者设置日志过期时间:

mysql> set global expire_logs_days = 30;

5.在复制的时候报错

Last_SQL_Errno: 1146

解决:

set global sql_slave_skip_counter=20;

如果一条解决不了可以多复制几条

然后:stop slave;

start slave;

或者:

在从服务器上设置忽略该错.

在my.cnf文件中添加“slave-skip-errors = 1146 ;”,版权属于:Eric Qiu*

转载时须注明出处及本声明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值