首页 > 代码库 > mysql主从
mysql主从
俩台虚拟机 Centos6.5
mysql master 192.168.11.161
mysql slave 192.168.11.135
俩台虚拟机上
yum install mysql mysql-serevr mysql-devel(没有用,防止以后用)
/etc/init.d/mysqld start
mysqladmin -u root password ‘123456‘
chkconfig mysqld on
在mysql master上
(1)
mysql -uroot -p123456
create database tb;
use tb;
create table tbtable(id int(4),name nvarchar(20));
quit
(测试用的库和表)
(2)
server-id=161 (服务器唯一ID,默认是1,一般取IP最后一段,整数1到2的32次方)
log-bin=mysql-bin #启用日志
binlog-do-db=tb #指明同步那些数据库
replicate-ignore-db=test #指明不同步那些数据库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
port=3306
(3)
登录主库赋予从库权限账号,允许用户在主库上读取日志(用户名: slave密码:123456)
mysql -uroot -p123456
grant replication slave on *.* to ‘tbslave‘@‘192.168.11.135‘ identified by ‘123456‘;
为验证账号我们可以在从的机器上用命令作如下测试
mysql -u tbslave -p -h 192.168.11.161
(4)
显示主库信息
show master status;
mysql> show master status;
在mysql slave 上
vim /etc/my.cnf
[mysqld]
server-id=135
mysql> slave stop
mysql> change master to master_host=‘192.168.11.161‘,master_user=‘tbslave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000003‘,master_log_pos=264;
Query OK, 0 rows affected (0.02 sec)
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.11.161
Master_User: tbslave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 264
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 264
Relay_Log_Space: 407
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.01 sec)
ERROR:
No query specified
mysql>
测试
在主库上新建表,看看从会不会立即同步
主库上:
mysql -uroot -p123456
use tb;
create table tbtest(id int(100),name nvarchar(20),passwd nvarchar(100));
切换到从机上
mysql -uroot -p123456
use tb;
show tables;
如果能看到主库中建立的表那么表示成功同步了(配置好以后主mysql不要重启,重启mysql master的status会发生变化,slave就有问题了,要重新执行change master to master_host=‘192.168.11.161‘,master_user=‘tbslave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000003‘,master_log_pos=264;)
在mysql master执行操作,发生变化,
mysql 主主复制
这里才是主主复制的开始,其实方法很简单,我们之前可以实现主从复制也就是说,再把从做为主,主再做为从,就实现主主复制了,不理解那就慢慢看吧,大家注意一点,我是在主从复制完成后在此基础上去完成主主复制的。
1、编辑之前的从服务器,mysql slave
vim /etc/my.cnf
加入如下内容:
log-bin=mysql-bin
binlog-do-db=tb
replicate-ignore-db=test
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
port=3306
2、重启mysqld使配置生效
/etc/init.d/mysqld restart
(3)
登录主库赋予从库权限账号,允许用户在主库上读取日志(用户名: slave密码:123456)
mysql -uroot -p123456
grant replication slave on *.* to ‘tbslave‘@‘192.168.11.161‘ identified by ‘123456‘;
测试
mysql -utbslave -p -h 192.168.11.135
4、mysql slave上登录数据库记录file 和position
mysql> show master status;
5 mysql master上
mysql> change master to master_host=‘192.168.11.135‘,master_user=‘tbslave‘,master_password=‘123456‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=106;
show slave status\G
看到上两个进程为数据库与另一边的master 已经建立连接
因为我是同步tb数据库所以我做了如下测试 ,测试是通过的
在任意一台master上使用tb数据库插入数据,在另一边的数据库上看数据是否同步
图片丢失了,哎,粘贴不够来。