(1)主,从换163源
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
yum clean all
yum makecache
(2)主从下载安装mysql
yum install -y mysql mysql-server
(3)主上操作
vim /etc/my.cnf
server-id=1
log-bin= mysql-binlog
service mysqld restart
show master status #记住mysql-bin和position
mysql -uroot
grant replication slave on *.* to 'repl'@'10.2.3.56' identified by '123456';#创建一个用户给从用来登录主,以便于复制操作
(4)从上操作
vim /etc/my.cnf
server-id=2
relay-log= mysql -relay-bin
service mysqld restart
mysql -uroot
slave stop;
change master to master_host='10.2.3.57',master_port=3306,master_user='repl',master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=106;
slave start
show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(5)测试
在主上创建一个数据库
create database lk
在从上查看
show databases;
同步!
(6)附加
我做次试验的前提是两个mysql数据库都是刚安装的,里面的内容完全相同
我们一定要保证在配置主从的时候两个数据库是完全一样的
1.指定要同步的数据库,修改主配置文件
vim /etc/my.conf
binlog-do-db=db1,db2 #用来指定需要同步的库
binlog-ignore-db=db1,db2 #指定忽略不同步的库
或者在从上修改配置文件
vim /etc/my.conf
replicate-do-db=db1,db2 #用来指定需要同步的库
replicate-ignore-db=db1,db2 #指定忽略不同步的库
- 保证主从要同步的数据库文件完全一样
在主上下载db1的数据库文件
flush tables with read lock;#这个好像为了保持数据同步,关闭所有打开的表,并给所有的表都家加上一个只读锁,直到主执行unlock tables
mysqldump -uroot -p123456 db1 > db1.sql
远程拷贝给从,然后在从上导入给自己的数据库(保证有数据库db1)
mysql -uroot db1 < db1.sql
然后打开主的read lock
mysql -uroot -p123456 -e "unlock tables"
遇到的问题:
Slave_IO_Running: No
Slave_SQL_Running: Yes
error connecting to master 'repl@10.2.3.57:3306' - retry-time: 60 retries: 86400
解决:关闭服务器的防火墙和selinux
service iptables stop
chkconfig iptables off
setenforce 0
getenforce
vim /etc/selinux/config
SELINUX=disabled