2015年9月17日 23:00:36 update

想要好好了解mysql复制,还是去看看《高性能MySQL》(第三版)好了,上面说的比较详细。

===========

在本地用virtualbox安装了两台centos6.7服务器,配置了主从复制。两个服务器都配置了第二块网卡(host-only),master的ip为192.168.56.102

slave的ip为192.168.56.103

安装

centos-6.7-minimal.iso

配置eth0网卡

默认不能上网!因为没开启eth0

vi /etc/sysconfig/network-scripts/ifcfg-eth0

ONBOOT=yes #修改!
MM_Controlled=no #修改!
BOOTPROTO=dhcp #不修改,就用它!
##其他没有列出的行,用默认值,不要动! /etc/init.d/network restart

添加网卡

cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth1 vi /etc/udev/rules.d/70-persistent-net.rule #查看eth1的mac地址并复制
vi ifcfg-eth1
#修改掉mac地址
#删除UUID 没有这个UUID一样可以玩!因为我并没有找到好用的寻找到uuid的方法

关selinux

我就没见这东西好用过!

vi /etc/selinux/config

SELINUX=disabled #!修改!

reboot #退出vim后,重启才能生效

mysql安装和简单配置

yum install mysql mysql-devel mysql-server
chkconfig --add mysqld
chkconfig mysqld on #开机自动启动
service mysqld start mysql_secure_installation #安全安装:设定root密码,移除匿名用户,禁用远程登陆,删除测试数据和访问权限,重新加载用户权限表

master配置

cp /etc/my.cnf /etc/my.cnf.bak  #备份
vi /etc/my.cnf #编辑文件内容为:
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-bin=mysql-bin #新增。表示使用二进制日志。前面的datadir则指定了binlog的存放目录
server-id=102 #新增。用本机ip最后一段,比如192.168.56.102那么使用102 /etc/init.d/mysqld restart #重启mysql
mysql -uroot -ppipe36# #登陆mysql
mysql>grant replication slave, replication client on *.* to 'repl'@'192.168.56.103' identified by 'zjmos123567'
# 设定允许slave服务器使用的master帐号,允许其远程登陆(指定了slave的ip地址),同时设定了用户名和密码

接下来,从数据库中导出数据,然后传送给slave服务器,并在slave服务器中导入sql文件。

为了确保没有数据库插入或者修改操作,要设定lock:

mysqldump -uroot -ppipe36# --lock-all-tables testDB > testDB.sql  #导出testDB数据库到testDB.sql文件
mysql -u root -p

mysql>show master status; #查看状态!重要! File字段和Position字段给slave用的!

slave配置

my.cnf中加入server-id

#[mysqld]下添加两行
log-bin=mysql-bin #非必须
server-id=103 #一般取本及机ip最后一段

重启mysql

service mysqld restart

导入master的sql文件

注意 master导出的文件可能只是一个数据库的(本例),因此可能sql文件中头部缺少两句:

create database xxx if not exists;
use xxx;

那么需要slave登陆mysql后手动输入这两句,以指定数据库名。

mysql -u root -p
source testDB.sql
change master to master_host='192.168.56.102',master_user='repl',master_password='zjmos123567',master_log_file='mysql-bin.000009',master_log_pos=901;

此处,master_user用户是master上创建的用户,master_password和前面master中的配置的要保持一致;master_log_file的值要和master中查询到的master status结果中的File保持一致,master_log_pos则和Position字段保持一致。

mysql> start slave; #开启slave
mysql> show slave status\G #查看slave是否正常工作,主要看`Slave_IO_Running`和`Slave_SQL_Running`

还是不行?

无语了。slave的Slave_IO_Running项一直显示NO

发现是防火墙iptable在作怪。master和slave都关掉好了:

service iptables stop
chkconfig iptables off

然后重启动mysql服务,终于好了。

===

常见错误和solution

Error duplicate entry ....

因为同步出错了。

在slave上执行:

stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

然而,counter设置为1也还是很不靠谱的。

有时候因为mysql发生了回滚操作,因此要避开的insert失败(错误代码1062)项,有非常多。

这时候不妨在my.cnf(windows下是my.ini)中进行配置:

slave-skip-errors = 1062

然后重启mysql服务,再看看mysql主从复制的结果。等复制好了,再把上面这条skip的配置项去掉。毕竟一直skip感觉很不安全啊。。

centos6下mysql的主从复制的配置的更多相关文章

  1. CentOS6下mysql的安装与配置

    CentOS是免费的.开源的.可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一. ...

  2. Windows 8.1下 MySQL绿色版安装配置与使用

    原文:Windows 8.1下 MySQL绿色版安装配置与使用 Mysql-5.6.17-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址:http://downloads.my ...

  3. .Neter玩转Linux系列之六:Linux下MySQL的安装、配置、使用

    一.Linux安装MySQL (1)下载安装包:https://dev.mysql.com/downloads/mysql/ (2)解压并安装 命令:tar zxvf 文件名 解压完成之后,重名一下文 ...

  4. windows下mysql中文乱码, 配置解决方法

    内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内 ...

  5. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  6. Linux下mysql的主从复制配置

    1.准备两台数据库环境,或者单台多实例环境,能正常启动和登录. 数据库的安装和多实例配置请参考https://www.cnblogs.com/qiuhom-1874/p/9757061.html. 2 ...

  7. docker下MySQL的主从复制

    MySql的主从复制 sudo docker pull MySQL:5.7 拉取MySQL的镜像文件(版本号为 5.7) sudo docker run -p 3339:3306 --name mas ...

  8. Linux(Ubuntu)下MySQL的安装与配置

    转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...

  9. linux下Mysql 的安装、配置、数据导入导出

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),虽然功能未必很强大,但因它的免费开源而广受欢迎. 这次,接着上一篇<CentOs minimal安装和开发环境部署>,讲下L ...

随机推荐

  1. 日志分割工具——cronolog

    使用cronolog可以格式化日志文件的格式,比如按时间分割,易于管理和分析. 1.下载软件 http://cronolog.org/download/index.html 用法见 lighttpd配 ...

  2. ML博客链接

    http://blog.csdn.net/yingwei13mei/article/category/6602238 各种都有(系统教程):http://www.easemob.com/news/76 ...

  3. 如何在Linux系统上安装QQ

    转载自KKK博客 首先我们需要在wine的官网上安装一个wine. https://wiki.winehq.org/Ubuntu_zhcn 按照上面的提示一步步来,做完之后点下面的链接下载 https ...

  4. AI技术说:人工智能相关概念与发展简史

    作为近几年的一大热词,人工智能一直是科技圈不可忽视的一大风口.随着智能硬件的迭代,智能家居产品逐步走进千家万户,语音识别.图像识别等AI相关技术也经历了阶梯式发展.如何看待人工智能的本质?人工智能的飞 ...

  5. xcode禁用ARC(Automatic Reference Counting)

    Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入的最大的变革和最激动人心的变化.ARC是新的LLVM 3.0编译器的一项特性, ...

  6. centos7下安装mysql5.7.24

    第一步:下载rpm包 sudo wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-rel ...

  7. Mybatis批量删除之Error code 1064, SQL state 42000;

    (一)小小的一次记载. (二):最近的项目都是使用MyBatis,批量新增自己都会写了,但是一次批量删除可把我给折腾了下,写法网上都有,但是照着做就是不行,最后问公司的人,问网友才得到答案,那就是jd ...

  8. Win10环境下配置VScode的C++编译环境

    写前感想:前前后后,折腾好几次,最后还是在学长安利下,开始入坑vscode了.原因一个是小巧,还有就是vs新建工程码题的方式太消耗内存了,基本每个项目就是以MB为单位计算的,然后希望用这篇文章记录自己 ...

  9. spring boot(一):入门

    Spring Boot的优点 Spring Boot 是伴随着 Spring 4.0 诞生的,从字面理解,Boot是引导的意思,因此 Spring Boot 旨在帮助开发者快速搭建 Spring 框架 ...

  10. 《Troubleshooting SQL Server》读书笔记-CPU使用率过高(上)

    第三章 High CPU Utilization. CPU使用率过高问题很容易被发现,但是诊断却不是很容易.CPU使用过高很多时候会成为其它问题的替罪羊,所以在确认和故障诊断时要抽丝剥茧. 调查CPU ...