说明:
mysql主从数据同步,从mysql实时同步主mysql的数据。要求主msyql与从mysql版本相同或主msyql不高于从mysql版本(版本查询>select version())。一般稳健的做法都是使其版本相同,因为不同mysql版本之间的binlog(二进制日志)格式可能不一样,有可能会导致同步异常。
安装 mysql 服务端:
yum install mysql-server mysql-devel
安装 mysql 客户端:
yum install mysql
设置mysql密码
mysqladmin -uroot password '123456';
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=131 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
[root@localhost ~]# vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=132 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
service mysqld restart
[root@localhost ~]# mysql -uroot -p
mysql> grant replication slave on *.* to slave@'%' identified by '123456';
//一般不用root帐号,slave@'%':所有客户端都能连,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 247 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
mysql> change master to
master_host='192.168.198.131',
MASTER_PORT=3306,
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=247; //注意不要断开,247数字前后无单引号。
mysql> start slave;
mysql> show slave status\G
当输入命令后会出现一大堆的状态,具体看Slave_IO_Running以及Slave_SQL_Running的状态,如果都是Yes就代表正常
然后还可以看到Slave_IO_State的状态是Waiting for master to send event,含义是等待Master服务器发送事件
mysql> create database fgf;
mysql> use fgf;
mysql> CREATE TABLE `users` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`website` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
插入成功之后,稍等片刻,就可以在Slave服务器上查看到相同记录,主从同步有时延
如果想要查看当前Slave服务器的同步状态及偏移值等信息,请查找master.info文件
more /var/lib/mysql/master.info
查看Slave执行binlog文件的情况
more /var/lib/mysql/relay-log.info