MySQL主从复制部署

news/2024/8/27 11:04:36

前言

  MySQL的主从复制是基于二进制日志机制的,需开启二进制日志功能。在具体的配置过程中,需注意主服务器与从服务器均配置唯一ID编号,且从服务器必须设置主服务器的主机名、日志文件名、文件位置等参数。整个过程可分为如下几个步骤:

(1)     主服务器:开启二进制日志功能,设置服务器ID,并重启MySQL服务;

(2)     在所有从服务器上设置服务器ID(唯一);

(3)     在主服务器上为不同的从服务器创建可读取主服务器日志文件的账户,或使用统一账户;

一、系统规划

1、主服务器

操作系统版本: RHEL 6.6 x64

数据库版本: MySQL 5.6

主机IP:192.168.152.129

主机名:master

数据库名称:

ID编号:1

2、从服务器

操作系统版本:RHEL 6.6 x64

数据库版本:MySQL 5.6(必须保证MySQL版本一致)

主机IP:192.168.152.128

主机名:slave

数据库名称:

ID编号:2

注:本文为个人学习之用,使用虚拟机模拟,可作为实施参考。

二、安装准备

1、存储

需要根据实际情况,为源数和目标端数据库分配足够的可用空间

2、网络

需要开通源端和目标端服务器的any-any的网络端口互通性

3、NTP

需要同步源和目标主机时钟同步机制,若为内网环境,推荐配置内网时钟服务器

4、其他

配置静态IP、主机名、IP与主机名绑定、防火墙(开启端口或关闭防火墙)

5、安装MySQL

       为主服务器和从服务器安装MySQL,须保证两者版本一致,或者slave端版本高于master版本。

三、主服务器配置

1、准备测试数据

准备测试数据,模拟要同步对象。

mysql> create database hr;

mysql> use hr;

mysql> create table emp(id int primary key,name char(20));

mysql> insert into emp(id,name) values(1,'tom');

2、设置my.cnf参数

(1)拷贝配置文件

# cp /usr/local/mysql/my.cnf /etc/my.cnf

如有必要,应注意备份配置文件,并且在生产活动懂养成备份的意识。

(2)参数设置

以下仅列出几个必要参数:

log-bin=mysql-bin             启用二进制日志
server-id=1                        服务器ID,可1-之间的任意整数
binlog-ignore-db=information_schema           避免同步的数据库
binlog-ignore-db=performance_schema 
binlog-ignore-db=mysql
binlog-do-db=hr                       二进制需要同步的数据库名

注意:在配置文件中不可使用skip-networking参数,否则从服务器将无法连接主服务器并进行数据同步

(3)重启服务器

# service mysqld restart

3、为slave用户添加同步专用权限

(1)创建复制账户并赋权

mysql> GRANT FILE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root';

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_cp'@'192.168.1.2' IDENTIFIED BY 'root';

mysql> FLUSH PRIVILEGES;

(2)添加管理用户

grant all privileges on *.* to admin@'%' identified by 'root';

(3)刷新权限

flush privileges; 

四、从服务器设置

1、设置my.cnf参数

(1)备份配置文件

# cp /usr/local/mysql/my.cnf /etc/my.cnf

(2)修改参数信息

必要参数如下:

log-bin=mysql-bin

server-id=2                       #从服务器ID

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=mysql

replicate-do-db=hr                 #同步的数据库名

replicate-ignore-db=mysql        #屏蔽不同步的数据库

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

注:MySQL 5.6之后没有master-user等参数,否则重启报错

(3)重启服务器

# service mysqld restart

五、数据库备份、同步

1、对数据库进行备份

[root@master mysql]# /usr/local/mysql/bin/mysqldump -h localhost -uroot -proot --all-databases --lock-all-tables >/tmp/dbdump.sql
[root@master mysql]# scp /tmp/dbdump.sql root@slave:/tmp/
[root@slave ~]# mysql -u root -p < /tmp/dbdump.sql

注:从服务器不需要创建要同步的数据库,备份脚本会自动创建。

2、配置从服务器连接主服务器同步

(1)、获取主服务器二进制日志信息

[root@master mysql]# mysql -uroot -p

Enter password:
mysql> flush tables with read lock;        --只读锁定
mysql> show master status;
mysql> unlock tables;                       --解除锁定

(2)设置从服务器同步

[root@slave ~]# mysql -u root –p

mysql> stop slaves;

mysql> change master to
    -> master_host='192.168.152.129',
    -> master_user='slave_cp',
    -> master_password='root',
    -> master_log_file='mysql-bin.000003',
    -> master_log_pos=195;                 --这里的参数取值参考查询到的master日志信息

mysql> start slave;
mysql> show slave status \G

3、同步验证

在master上添加数据,查看slave端的同步情况。

master节点:

[root@master ~]# mysql -uroot -p
mysql> create database test;
mysql> use test;
mysql> create table users(id int primary key,name char(20));
mysql> insert into users(id,name)values(1,'aa');
mysql> use hr;
mysql> show tables;
mysql> create table bb(id int,name char(20));
mysql> insert into emp(id,name)values(2,'bb');

 slave节点:

[root@slave ~]# mysql -uroot -p
mysql> select * from test.users;

错误

1、启动从服务器失败

ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

解决:

mysql> reset slave;

mysql> change master to master_host='192.168.152.129',
master_user='slave_cp',master_password='root',master_log_file='mysql-bin.000005',
master_log_pos=610;
mysql> start slave;

参考:https://zhangge.net/5091.html

参考:http://blog.csdn.net/xlgen157387/article/details/51331244/

 

转载于:https://www.cnblogs.com/chinas/p/7446891.html


http://www.niftyadmin.cn/n/1899115.html

相关文章

在Fedora16中安装Qt

首先&#xff0c;在http://www.trolltech.com/download上下载linux下的qt源文件&#xff08;我下载时最新版是&#xff1a;qt-everywhere-opensource-src-4.7.4.tar.gz&#xff09;。 将该文件放到某个目录下&#xff0c;进行解压缩&#xff1a; unzip qt-everywhere…

fedora如何安装源码Qt

转载地址 安装qt是因为我刚安装过mplayer想装个前端上网&#xff0c;一查&#xff0c;很多都推崇用smplayer。我也就下决心装上&#xff0c;刚开始一直都装不上&#xff0c;后来静心读了读Install文件才明白要装smplayer必须要有qt4.2或者更高版本&#xff0c;用rpm -qa qt才发…

Spring中bean的作用范围

singleton作用域&#xff1a; Spring的scope的默认值是singleton Spring 只会为每一个bean创建一个实例,并保持bean的引用. <bean id"bean的id" class"bean的包名.类名" scope"singleton"/> 或 <bean id"bean的id" class&quo…

开发一个全功能的 Word Add-in

(点击放大图像)\\\\2016 年 10 月我参加了在北京举行的 DevDays Asia 2016 - Office 365 应用开发 “48 小时黑客马拉松 ”&#xff0c;我开发的一个 Word Add-in Demo —— WordTemplateHelper 获得了二等奖。在会场有幸结识了陈希章老师&#xff0c;在与陈老师的交流中受益良…

CC2540 低功耗串口, POWER_SAVING 模式 下 串口 0 的使用

低功耗 模式 下 使用 串口 &#xff0c; 因为 PM2 或者 PM3 状态下 32M晶振 是不工作 的&#xff0c;根据手册得知没有32M晶振&#xff0c; 串口是不能工作的&#xff0c;但是可以使用 外部中断&#xff0c;因此&#xff0c;我把 串口的接收引脚设置为外部中断&#xff0c;这…

mysql的水平拆分和垂直拆分 (转)

http://www.cnblogs.com/sns007/p/5790838.html 1&#xff0c;水平分割&#xff1a; 例&#xff1a;QQ的登录表。假设QQ的用户有100亿&#xff0c;如果只有一张表&#xff0c;每个用户登录的时候数据库都要从这100亿中查找&#xff0c;会很慢很慢。如果将这一张表分成100份&…

iOS-Core-Animation-Advanced-Techniques(三)

源&#xff1a;http://www.cocoachina.com/ios/20150105/10827.html 专用图层 复杂的组织都是专门化的--Catharine R. Stimpson 到目前为止&#xff0c;我们已经探讨过CALayer类了&#xff0c;同时我们也了解到了一些非常有用的绘图和动画功能。但是Core Animation图层不仅仅能…

CTO下午茶: 当我们谈论万物互联时,我们在谈论什么?

一片嫩叶&#xff0c;汲日月精华&#xff0c;沐春秋雨露&#xff0c;汇山水灵性。一朝脱离大树&#xff0c;便需要经过杀青、揉捻、烘干、渥堆、压制等等一系列脱胎换骨的考验&#xff0c;方百炼成茶。再静静地历经岁月&#xff0c;转化出弥久醇香。最后经沸水冲拂&#xff0c;…