mysql主从复制笔记

mysql主从复制笔记(2台阿里云服务器 centos系统 mysql版本最好一致)1 配置Master主服务器在Master MySQL上创建一个用户‘dog’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。<pre>CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';GRANT REPLICATION SLAVE ON *.* TO 'dog'@'localhost';</pre>
ps:先localhost 然后再改成%, 然后从数据库登陆master数据库测试下 能不能连接上



2 找到MySQL安装文件夹修改my.cnf文件。mysql中有好几种日志方式,这不是今天的重点。我们只要启动二进制日志log-bin就ok。<pre>server-id=1 //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号 这个地方要注意不能出现relay-loglog-bin=master-binlog-bin-index=master-bin.index</pre>
然后重启mysql 运行如下<pre>mysql&gt; SHOW MASTER STATUS;+------------------+----------+--------------+------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 |      313 |              |                  |+------------------+----------+--------------+------------------+1 row in set</pre>

3 设置slave数据库 这个地方要注意不能出现log-bin log-bin-index找到mysql配置文件<pre>[mysqld] server-id=2 relay-log-index=slave-relay-bin.index relay-log=slave-relay-bin </pre>重启MySQL服务
4 连接Master slave数据库命令输入如下 直接运行<pre>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;</pre>

如果报错了 那肯定是master权限问题 检查下master权限
5 启动Slavestart slave;
6查看slave状态是否成功<pre> 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</pre>
ps:如果Slave_IO_Running显示conecting 那就是change master to master_hos李的参数写错了 仔细对应下 主数据库SHOW MASTER STATUS里的数据还有看看主服务器的mysql错误日志还有仔细看看主从数据库配置文件有没有写错
7在主服务器创建个数据库 试试    ps前期 主从数据库内容必须保持一致 不然会报错<pre>
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)</pre>


   slave数据立马会更新<pre>
mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || dsd                || mysql              || performance_schema |+--------------------+4 rows in set (0.00 sec)</pre>


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








原文地址:https://www.cnblogs.com/newmiracle/p/11872937.html