mysql主主复制某张表_MySQL主主复制实战

MySQL主主复制实战:

基础环境配置很简单,我这就不浪费时间了,直接开始。

#####################################################################################

m1-m2配置文件更改

#####################################################################################

一、添加my.cnf自增的参数和打开binlog

(1)Master1:

#master-master

auto_increment_increment = 2  #自增ID的间隔,如1 3 5 间隔为2

auto_increment_offset = 1     #自增ID的初始位置

log-bin=mysqlbin_3307_tangbo

(2)Master1:

#master-master

auto_increment_increment = 2   #自增ID的间隔,如2 4 6 间隔为2

auto_increment_offset = 2      #自增ID的初始位置

log-bin=mysqlbin_3308_tangbo

二、互为主从参数---两边都要加入配置

replicate-ignore-db = mysql #不同步mysql库

log-slave-updates  #开启从库binlog日志

binlog-ignore-db = mysql   #不记录binlog日志

binlog-ignore-db = information_schema #不记录binlog日志

binlog-ignore-db = performance_schema #不记录binlog日志

skip-slave-start #启动忽略从库启动

#####################################################################################

master1配置文件更改

#####################################################################################

三、在主库master1上的操作

(1)开启binlog并设置server-id的值

server_id = 100

log-bin=mysqlbin_3307_tangbo

(2)创建用于同步的账号tangbo(master)

mysql> GRANT replication slave ON *.* TO 'tangbo'@'192.168.11.%' IDENTIFIED BY '111111';

Query OK, 0 rows affected (0.01 sec)

mysql>

(3)锁表只读(master)

mysql> flush table with read lock;

Query OK, 0 rows affected (0.00 sec)

mysql>

(4)查看master状态当前日志文件名和二进制日志偏移量(要记录,后面会用)

mysql> show master status;

+-----------------------------+----------+--------------+---------------------------------------------+-------------------+

| File                        | Position | Binlog_Do_DB | Binlog_Ignore_DB                            | Executed_Gtid_Set |

+-----------------------------+----------+--------------+---------------------------------------------+-------------------+

| mysqlbin_3307_tangbo.000003 |      336 |              | mysql,information_schema,performance_schema |                   |

+-----------------------------+----------+--------------+---------------------------------------------+-------------------+

1 row in set (0.00 sec)

mysql>

(5)单开新窗口,备份数据库(数据量大,并且允许停机可以直接tar cp)

mysqldump -uroot -p111111 -S /data/3308/mysql.sock -A -B  | gzip > /opt/all.sql.gz

(6)主库解锁,恢复可写

mysql> unlock table;

Query OK, 0 rows affected (0.00 sec)

mysql>

(7)把备份的数据考入到另一台主库

scp就行

#####################################################################################

master2配置文件更改

#####################################################################################

三、在主库master2上的操作

(1)设置server-id 值,且重启数据库

server_id = 101

(2)把备份的MySQL数据导入从库(Slave)

gzip -d all.sql.gz

mysql -uroot -p111111 -S /data/3308/mysql.sock  

(3)登陆mysql(master2)建立同步master1

change master to

master_host='192.168.11.36',

master_port=3307,

master_user='tangbo',

master_password='111111',

master_log_file='mysqlbin_3307_tangbo.000003',

master_log_pos=336;

(4)启动同步命令,并查看:slave

mysql> start slave;

Query OK, 0 rows affected (0.11 sec)

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0

#####################################################################################

master2配置文件更改-跟前面步骤一样。连接时改改配置即可

#####################################################################################

change master to

master_host='192.168.11.36',

master_port=3308,

master_user='tangbo',

master_password='111111',

master_log_file='mysqlbin_3308_tangbo.000001',

master_log_pos=120;

创建表测试:

CREATE TABLE `caiwu` (

`id` int(30) NOT NULL AUTO_INCREMENT,

`name` varchar(60) NOT NULL,

`ages` varchar(60) DEFAULT NULL,

`job` varchar(30) DEFAULT NULL,

`pay` float DEFAULT NULL,

`time` date DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

测试脚本

[root@mysql-double ~]# cat mysqldata1.sh

#!/bin/bash

##########################

###########################

#MysqlLogin="mysql -uroot -p111111" #→定义登陆mysql的命令,方便下文使用

MysqlLogin="mysql -uroot -p111111 -S /data/3308/mysql.sock" #此行适合单机多实例数据库的方式

i=1

while true #→true表示永远为真

do

${MysqlLogin} -e "insert into tangbo.caiwu(name,ages,job,pay,time) values('tangbo"$i"','28','wangluo',5000,20150120);"

#${MysqlLogin} -e "insert into oldboy.student values ("$i",'oldboy"$i"','m','21','computer"$i"');"

#如果是多张表可以同时插入多张表,我这里给出的例子,是插入不同的记录,可以用于做各种小测试,比较适合各类初级不会mysql存储过程的运维人员。

((i++))

sleep 20;

done

[root@mysql-double ~]#

四、可以看到主主复制成功。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值