mysql 主从复制

首先是搭建环境,我是在一个虚拟机上测试用的

1>首先安装mysql
rpm -ivh MySQL-server-5.5.38-1.rhel5.i386.rpm
rpm -ivh MySQL-client-5.5.38-1.rhel5.i386.rpm

如果报错说少prel就安装prel包
yum -y install prel

2>复制配置文件 因为如果是rpm安装他是不会自动复制这个文件的
cp /usr/share/mysql/my-large.cnf  /etc/my.cnf

3>修改 my.cnf 配置文件
vi /etc/my.cnf
找到log-bin
:/log-bin=mysql-bin
下面几行就是 server-id =1  主服务器不用动 在他下面添加一行
设置共享数据库(添加这个就行)
binlog-do-db=gao
设置binlog不记录数据库,多个写多条(不用写)
binlog-ignore-db=mysql
设置binlog保存的天数(不用写)
expire-logs-days=10

修改完成后重启mysql
service mysql restart

如果出现报错ERROR! MySQL server PID file could not be found!
执行 rm -rf /var/lib/mysq/mysql-bin.index

从服务器和他的配置是一样 就是server-id不同

接下来就是一个很绕的环节,主服务器从服务器的操作,我就分别用不同颜色标出来了

还有就是如果允许最好把防火墙关了,别问为什么


4>在主服务器,进入到mysql,创建gao数据库,
随便建一张表,随便插入一些数据
mysql> create database gao charset utf8;
mysql> use gao;
mysql> create table test(id int,name char(20));
mysql> insert into test set id=1,name=123;

在在主服务器添加从服务器的账号 *.*代表所有数据库的所有表 ip是从服务器的ip 密码是从的密码
grant replication slave on *.* to 'slave'@'192.168.1.104' identified by '123123';

刷新授权表,让账号立刻生效
flush privileges;

查看用户是否已经添加
select user,host from mysql.user;

锁定主服务器的所有的表
flush tables with read lock;

先退出mysql,然后导出sql  >这个箭头指向就是将gao数据库导出成gao.sql到家目录当中
mysqldump -uroot -p gao>gao.sql

从主服务器把sql文件复制到从服务器的家目录 :~ 就是文件放到的地址
如果是 :/www 就是放到根目录www文件夹内 期间要输入从服务器的密码
scp gao.sql root@192.168.1.104:~

7>打开从服务器,编辑/etc/my.cnf,把server-id改成2
重启mysql,进入到mysql,
建立gao库,
mysql> create database gao charset utf8;

退出mysql,执行导入操作 期间要输入mysql的密码
mysql -uroot -p gao<gao.sql

8>在主服务器里面的mysql,打以下命令,查看bin-log状态
show master status;
查看从服务器状态
show slave status;

下面是示例图



9>在从服务器的mysql 输入 主机ip  master_user是你之前在主机添加从服务账号时的名字,通常就slave,master_password也是按照主机添加从服务账号时的密码来,后面两个要输入的就是刚才在主机mysql中show master status显示的,每个mysql都会不一样
mysql> change master to master_host='192.168.1.103',master_user='slave',master_password='123123',master_log_file='mysql-bin.000003',master_log_pos=728;

从服务器开启同步
mysql> start slave


把主服务器的表解锁,在主服务器的mysql里面操作
mysql> unlock tables;

然后在主服务器插入几条数据监测一下

从服务器中查询状态
mysql> show slave statusG

主服务器中查看状态
mysql> show processlistG


如果不成功就从主服务器添加从属账户开始再来一遍

原文地址:https://www.cnblogs.com/gaofeifiy/p/5075542.html