mysql数据库主从搭建

有很多公司的网站存在大量的并发访问,一般的解决方式就是利用MySQL主从配置,实现读写分离,减轻数据库压力,今天就记录一下,这几次搭建主从的一些心得

什么是MySQL主从复制

简单来说就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是主从复制

  1. 第一步当然是安装MySQL,数据库版本要一致,减少出现不可预支的问题
  2. 配置Master主服务器

      在Master MySQL上创建一个用户“slave”,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。

mysql>create user slave; //创建新用户

//repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.0.%' IDENTIFIED BY 'mysql';

刷新一下权限   flush privileges;

     找到MySQL安装文件夹修改my.ini文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。

 在[mysqld]下面增加下面几行代码

server-id=1   #给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号,如果从数据库也设置这个参数的话,一定不能相同,随便给个数字就可以了

log-bin=master-bin

log-bin-index=master-bin.index   #开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)

## 复制过滤:需要备份的数据库,输出binlog

#binlog-do-db=roncoo

## 复制过滤:不需要备份的数据库,不输出(mysql库一般不同步)

binlog-ignore-db=mysql

     查看日志

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

 重启MySQL服务

   4. Slave从服务器(centos)

(1)找到MySQL安装文件夹修改my.cnf文件,vim my.cnf

server-id= 101  #不可跟其他主从数据库相同

log-bin=edu-mysql-slave1-bin  # 开启二进制日志功能,以备Slave作为其它Slave的Master时使用

relay-log=mysql-relay-bin   #relay_log配置中继日志

log-slave-updates=1

read-only=1   #设定之后就是只读数据库了,只有super权限的用户可以读写

replicate-wild-do-table=db.%  #过滤掉不需要同步的数据库,只同步db数据库,这个最好在从库过滤

slave-skip-errors = 1133     #同步过程中忽略的错误码

(2) 重启数据库  service mysql restart;

(3)连接Master

change master to master_host='192.168.0.?',   //指定主服务器IP地址
master_port=3306,   
master_user='slave',   //指定在主服务器上可以进行同步的用户名
master_password='mysql',    //指定在主服务器上可以进行同步的用户名的密码
master_log_file='master-bin.000001',   //Master服务器产生的日志,必须跟主数据库的file字段一致
master_log_pos=0   //必须跟主数据库的Position一致

(4)启动Slave

  start slave;

 查看状态   show slave status; 

mysql 1236错误

猜你喜欢

转载自my.oschina.net/u/3705428/blog/1557564
今日推荐