Mysql主从配置(两台机器)

(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   #指定忽略不同步的库
  1. 保证主从要同步的数据库文件完全一样
    在主上下载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 '[email protected]:3306' - retry-time: 60  retries: 86400

解决:关闭服务器的防火墙和selinux

service iptables stop
chkconfig iptables off
setenforce 0
getenforce
vim /etc/selinux/config
  SELINUX=disabled

你可能感兴趣的:(Mysql主从配置(两台机器))