1、配置/etc/my.cnf文件
采取双机部署方式,两台机器的配置文件略有不同,如下图所示,server-id设置为不同的数字,auto_increment_offset一台机器设置为1,另外一台机器设置为2。
2、启动mysql服务
#service mysql start
#chkconfig mysql on
#/usr/bin/mysqladmin -u root password 'mysql.rzrk'
3、主备机配置
确认两台机器MYSQL服务都正确配置并成功启动,然后进行master同步的配置,以192.168.1.119和192.168.1.220为例,在8和9上分别执行如下命令:
grant replication slave on *.*to 'replication'@'192.168.1.%' identified by 'replication.rzrk';
在数据库中建立replication账号,并且允许192.168.1.0网段的地址来登录,密码是replication.rzrk:
flush privileges;
刷新数据库。
show master status;
然后再在119上执行如下命令(其中master_log_file和master_log_pos的值是220机器上显示的信息):
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。
结果如下所示:
4、验证
在其中一台机器导入初始数据库,命令如下:
mysql –u root -pmysql.rzrk
create database ttmgrportaldefault charset utf8;
quit
命令行执行:
mysql -u root -pttmgrportal < ttmgrportal_0828.sql
经验总结如下:mysql同步出问题就这样进行排查:
1、Warning: World-writable config file '/etc/my.cnf' is ignored
解决:#chmod 644/etc/my.cnf
# service mysqld stop
# service mysqld start
2、Slave_SQL_Running: NO
Seconds_Behind_Master:NULL
解决:>stop slave;
>set global sql_slave_skip_counter =1;
>start slave;
3、Fatal error: The slave I/O threadstops because master and slave have equal MySQL server UUIDs; these UUIDs mustbe different for replication to work.
解决:
> show variables like 'server_id';
> set global server_id=2; #此处的数值和my.cnf里设置的一样就行
> slave start;
4、mysql主从同步中showmaster status,结果为空?
没有开启二进制日志
mysql>show variables like '%log_bin%'; 如果是off表示你没有开启
开启二进制日志啊
在my.cnf中添加一条语句
log_bin=/var/log/mysqld/mysql-bin