mysql主从复制笔记

mysql主从复制笔记(2台阿里云服务器 centos系统 mysql版本最好一致)
1 配置Master主服务器
在Master MySQL上创建一个用户‘dog’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'dog'@'localhost';

ps:先localhost 然后再改成%, 然后从数据库登陆master数据库测试下 能不能连接上

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

server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号 这个地方要注意不能出现relay-log
log-bin=master-bin
log-bin-index=master-bin.index

然后重启mysql 运行如下

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      313 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set

3 设置slave数据库 这个地方要注意不能出现log-bin log-bin-index
找到mysql配置文件

[mysqld]
 server-id=2
 relay-log-index=slave-relay-bin.index
 relay-log=slave-relay-bin 

重启MySQL服务

4 连接Master slave数据库命令输入如下 直接运行

change master to master_host='192.168.1.104',
master_port=3306,
master_user='dog',
master_password='123456',
master_log_file='master-bin.000001',
master_log_pos=313;

如果报错了 那肯定是master权限问题 检查下master权限

5 启动Slave
start slave;

6查看slave状态是否成功

 mysql> show slave status;

        Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.1.104 //主服务器地址
              Master_User: dog//授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 313     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES

ps:如果Slave_IO_Running显示conecting 那就是change master to master_hos李的参数写错了 仔细对应下 主数据库SHOW MASTER STATUS里的数据
还有看看主服务器的mysql错误日志
还有仔细看看主从数据库配置文件有没有写错

7在主服务器创建个数据库 试试 ps前期 主从数据库内容必须保持一致 不然会报错


mysql> create database dsd;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bird               |
| dsd                |
| hi_db              |
| mysql              |
| performance_schema |
| wordpress          |
+--------------------+
7 rows in set (0.00 sec)

slave数据立马会更新


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dsd                |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

如果你要查看master 修改的二进制可以去master phpmyadmin 二进制可以查看
ps:原理就是master运行mysql语句 会更新到二进制日志 然后slave读取master的二进制日志 进行运行mysql语句
比如 master执行了一条update语句 slave也会执行一条update语句 如果slave因为表结构跟master不一样 导致运行 sql出错 就会造成主从复制出错

原创文章如转载,请注明本文链接: http://newmiracle.cn/?p=763

发表评论

电子邮件地址不会被公开。 必填项已用*标注