我的是实验环境是master:centos mysql(5.1)192.168.1.105
slave : ubuntu mysq'l(5.4)192.168.1.102 从数据库必须要版本高于主库。
实验前先确认两个mysql可以互相连接对方。
在主库上的操作:
创建一个用户:我们粗糙点 slave@% 密码123456,给权限。
编辑my.cnf文件
vi /etc/my.cnf
添加
server-id=1
并开启log-bin二进制日志文件
log-bin=mysql-bin
注:需要把默认的server-id=1去掉
mysql下得到binlog日志文件名和偏移量
mysql>show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.0000010 | 106| | |
+——————+———-+————–+——————+
这个file和position就是,后面slave配置中会用到;
在从库上的操作:
2.1、编辑my.cnf文件
vi /etc/my.cnf
添加
server-id=2
注:需要把默认的server-id=1去掉
2.2、启动从数据库
mysqld_safe –user=mysql &
2.3、对从数据库进行相应设置
mysql> change master to
-> master_host=’192.168.1.105′
-> master_user=’slave’
-> master_password=’123456’
-> master_log_file=’mysql-bin.0000010′
-> master_log_pos=106;
mysql>start slave;
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes这两参数都yes了基本上就配置成功了。
贴两个我遇到的问题:
Slave I/O: error connecting to master '[email protected]:3306' - retry-time: 60 retries: 86400, Error_code: 1045类似这种,maybe你的username ,passwd之类的写错了吧
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file' 这种的话,看看你的binlog和position是否写错
1、在主服务器test数据库中创建user表
mysql>use test;
mysql>create table user(id int);
2、在从服务器中查看user表
mysql>use test;
mysql> show tables like ‘user’;
+———————-+
| Tables_in_test(user) |
+———————-+
| user |
+———————-+
1 row in set (0.00 sec)
说明主从数据同步成功。