mysql同步

已安装好mysql,并且已把配置文件复制在/etc/my.cnf
主服务器的配置:
1,查看二进制日志的状态,开启二进制日志
进入mysql安装目录
#cd /usr/local/mysql

进入mysql
#bin/mysql -uroot -p
提示密码直接输入回车进入mysql(root没改密码默认空)

mysql> show variables like 'log_bin';

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

如果没有上面 log_bin 显示的off状态,则退出mysql,修改mysql配置文件
mysql> exit
#vi /etc/my.cnf

在[mysqld]的配置中,最后一行添加如下行
log-bin=mysql-bin

2,更改mysql服务器的server id
server-id       = 1

保存并重启mysql服务器使生效:
按esc输入:wq
#service mysqld restart

3,建立仅限slave主机使用的专门用于进行复制数据的用户:
进入mysql
#bin/mysql -uroot -p

mysql> grant replication client,replication slave on *.* to username@'192.168.189.131' identified by 'password';
192.168.189.131为从机ip
刷新授权表,使账户立即生效:
mysql> flush privileges;
 
4,清空日志:
mysql> flush master;


从服务器的配置:
1,
#vi /etc/my.cnf
在[mysqld]的配置中注释掉如下行:
log-bin=mysql-bin
变成
#log-bin=mysql-bin
在注释掉的log-bin=mysql-bin下一行添加:
relay-log=relay-bin

2,修改server id:
server id标识一台mysql服务器,为了避免循环复制,主从服务器的server id必须不同
在[mysqld]的配置中修改:
server-id       = 2

保存退出
按esc输入:wq

重启服务器:
#service mysqld restart

3,指定主服务器:
进入mysql安装目录
#cd /usr/local/mysql
进入mysql
#bin/mysql -uroot -p

这里指定的要和在主服务器上建立的用户相同:
mysql> change master to master_host='192.168.189.128',master_user='username',master_password='password';

192.168.189.128为主服务器ip


4,启动从服务器进程并查看运行状态;
mysql> start slave;
mysql> show slave statusG
如果出现如下行,则表明正常启动
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

退出mysql
mysql> exit



好了,这样我们的主从服务器就搭建好了,从服务器不能进行写操作,否则同步时效。
如果主服务器一开始就有大量数据,需手动使用软件备份,在从服务器上还原数据,再同步
还有主从半同步的实现但只有mysql-5.5版本之后才支持
原文地址:https://www.cnblogs.com/dreamhome/p/3189139.html