CentOS搭建MySQL主从复制,读写分离

环境(虚拟机):

CentOS2.6 64位,mysql5.5

基础环境说明:

主数据库IP  标记为主机A192.168.160.244

从数据库IP  标记为主机B192.168.160.245

端口号:3306

数据库用户名:root

数据库密码:china

测试的数据库名:mybase(里面一个表mybase,有两个字段idname

初装mysqlroot需要初始化一下密码,拥有对库表的操作权限

主机A要确定下是否关闭防火墙;

清空防火墙规则,语句:

iptables -F

service iptables save

两台主机需要通过ping命令先确定是否可以连通。

 

核心操作步骤:

1.登录主机A,进入mysql,在mysql下执行:

GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.160.245' IDENTIFIED BY '123456'

2.打开主机Amy.cnf(一般在/etc/my.cnf,由于安装方式的不同,有可能一开始没有这个文件,去mysql的安装目录,本教程中实际是在/usr/share/mysql文件下,复制my-medium.cnf/etc/my.cnf并改名字)输入如下:

server-id               = 244    #主机标示,整数

log_bin                 = /var/log/mysql/mysql-bin.log   #确保此文件可写

read-only              =0  #主机,读写都可以

binlog-do-db         =mybase   #需要备份数据,多个写多行

binlog-ignore-db    =mysql #不需要备份的数据库,多个写多行


上述“确保此文件可写”需要命令执行,打开这个文件夹权限,需要先进入mysql的目录后,执行:

[root@XXXX mysql]# pwd

/var/lib/mysql

[root@XXXX mysql]# chown -R mysql:mysql  /var/log/mysql

[root@XXXX mysql]#

[root@XXXX mysql]# service mysql restart  #重启mysql


3.登录mysql后先锁表,再导出mybase库为文件。

mysql> flush tables with read lock;

4.退出mysql,在外面执行:

mysqldump -h127.0.0.1 -p3306 -uroot -p mybase > /usr/local/mybase.sql

5.登录mysql解锁表

mysql> unlock tables;

6.在主机B数据库中导入刚才导出的sql文件,打开从数据库主机Bmy.cnf(如果没有,按第二步进行操作获得mn.cnf),输入如下(注意:部分网上教程会在这里面直接加master_host等参数,在5.5及以上后不再支持,需要另行配置,本教程会在第7步说明):

server-id       = 245

log_bin         = /var/log/mysql/mysql-bin.log  #“确保此文件可写”

replicate-do-db =mybase #只复制某个库

replicate-ignore-db=mysql #不复制某个库

 

上述“确保此文件可写”需要命令执行,打开这个文件夹权限,需要先进入mysql的目录后,执行:


[root@XXXX mysql]# pwd

/var/lib/mysql

[root@XXXX mysql]# chown -R mysql:mysql  /var/log/mysql

[root@XXXX mysql]#

[root@XXXX mysql]# service mysql restart  #重启mysql


7.在登录进mysql的前提下输入如下命令:

mysql>change master to master_host='192.168.160.245',master_user='backup',master_password='123456',master_connect_retry=10;

mysql> start slave;

8.查看配置是否正常,在mysql下执行:

mysql> show slave status\g

看输出:

 slave _io_running和slave_sql_running两个值,

如图红框标注的是否是yes。如果有connnecting就稍作等待,再次查询。如果排版比较乱,就看“mysql-bin.000007”(类似,只有后面尾数有变化)后面是不是有两个yes

9.验证,在主机A数据库进行操作mybase表,再验证主机B数据库是否有实时更新。




PS:备注一下可能用到的命令:

创建数据库:CREATE DATABASE mybase

创建表:CREATE TABLE mybase(
    id int not null,
    name char(20)
);

删除库:drop database mybase;

数据库导入:mysql -u root -pchina mysql < /usr/local/mybase.sql

查文件:find / -name xxxxxx

rpm安装:rpm -ivh --nodeps  xxxx

mysql初始化密码:mysqladmin -u root password “newpass” 


本人在安装时候用到的博文如下:

  1. http://www.jb51.net/article/83647.htm
  2. http://www.linuxidc.com/Linux/2012-12/76248.htm
  3. http://blog.csdn.net/liuyanggofurther/article/details/51850101
  4. https://www.cnblogs.com/zhengah/p/5210579.html
  5. http://www.jb51.net/article/108713.htm
  6. https://jingyan.baidu.com/article/fec4bce27e481cf2618d8bcb.html
  7. http://www.linuxidc.com/Linux/2016-09/135121.htm
  8. https://www.cnblogs.com/john2017/p/6269832.html
  9. http://blog.csdn.net/cityzenoldwang/article/details/61923457


你可能感兴趣的:(mysql,主从同步)