--mysql 复制搭建
准备sql2服务器 ,采用复制sql1的方法
--###sql2 解决vm网卡复制问题
vi /etc/udev/rules.d/70-persistent-net.rules
1、找到与ifconfig -a得出的MAC相同的一行
改成"NAME=eth0 "
2、把上面一行 NAME=‘eth0‘ 删掉
--sql2 同步mac地址 修改ip地址192.168.33.191
ifconfig
HWaddr 00:0C:29:D1:BE:65
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:0C:29:D1:BE:65"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.33.191"
GATEWAY="192.168.33.1"
--sql2 重启生效
reboot
--###sql2 删除源码编译安装的mysql
1、关闭mysql服务进程
su - mysql
mysqladmin shutdown
2、查找mysql安装目录
su - root
whereis mysql
mysql: /etc/mysql /usr/local/mysql
cd /etc/
rm -fr mysql
cd /usr/local/
rm -fr mysql
3、查找mysql相关目录
find / -name mysql
/data/sql1/data/mysql
cd /data
rm -fr sql1
--sql2 修改机器名 全新安装mysql
参见《mysql单机-单实例源码编译安装配置.sql》
--数据库在线备份配置
《xtrabackup安装与使用.sql》
--###配置mysql异步复制
master:sql1 192.168.33.190
slave :sql2 192.168.33.191
--1、master 配置
--2、确保master log-bin打开
mysql> show variables like ‘%log_bin%‘;
+---------------------------------+-----------------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------------+
| log_bin | ON |
--3、master 添加 server_id参数 多为ip
su - mysql
vi /etc/mysql/my.cnf
#replication
server_id = 10000
--4、master处 创建复制专用账户 usvr_replication 访问来源192.168.33网段 都可以连接master
CREATE USER [email protected]‘192.168.33.%‘ IDENTIFIED BY ‘123456‘;
GRANT REPLICATION SLAVE ON *.* TO [email protected]‘192.168.33.%‘; #--赋权replication slave 且可以复制所有用户数据库
--5、重启master
mysqladmin shutdown
sh mysql_startup.sh
--###slave配置
--1、测试usvr_replication 用户是否正常登录
mysql -h192.168.33.190 -p3306 -uusvr_replication -p
--2、slave 添加server_id 一般为ip 便于唯一
vi /etc/mysql/my.cnf
#replication
server_id = 10001
--3、确保auto.cnf 与master不一样
more /data/sql2/data/auto.cnf
--4、确保slave 也开启log-bin 目的:主备切换和备份
mysql> show variables like ‘%log_bin%‘;
+---------------------------------+-----------------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------------+
| log_bin | ON |
--数据同步
默认情况下,会同步复制用户下所有的DB,三种方法指定要复制的DB
1、在master上的/etc/my.inf中通过参数binlog-do-db、binlog-ignore-db设置需要同步的数据库。
2、在执行grant分配权限操作的时候,限定数据库
3、在slave上限定数据库使用replicate-do-db=dbname #--限定sql_thread需要应用的dbname
--5、重启slave
mysqladmin shutdown
sh mysql_startup.sh
--6、master 在线全备份 slave上恢复
《xtrabackup安装与使用.sql》
--7、定位全备份时刻,master上的 master_log_file和master_log_pos
more /data/sql2/data xtrabackup_binlog_pos_innodb
mysql-bin.000004 346
--8、配置slave到master 连接 执行时要小心,该句会多次执行时会产生重复数据!
mysql> change master to
master_host=‘192.168.33.190‘,
master_port=3306,
master_user=‘usvr_replication‘,
master_password=‘123456‘,
master_log_file=‘mysql-bin.000004‘,
master_log_pos=346;
--9、slave上启动开启同步
mysql> start slave;
--10、监控slave复制状态 如果有任何报错,建议
show slave status\G
--重启后replication 自动连接
--###配置半同步
《mysql_半同步复制配置.sql》
--###主备切换
各参数调整