zoukankan      html  css  js  c++  java
  • Mysql学习总结(33)——阿里云centos配置MySQL主从复制

    1.安装jdk1.8

    首先确定没有安装过jdk

    阿里云centos配置mysql主从复制

    2.yum –y list java*查询系统自带的jdk安装包情况。

    3.安装jdk1.8

    阿里云centos配置mysql主从复制

    4. 验证安装结果。

    阿里云centos配置mysql主从复制

    安装mysql

    1. rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

    2. yum -y install mysql-community-server

    3.加入开机启动:systemctl enable mysqld

    4. 启动mysql服务进程:启动mysql服务进程systemctl start mysqld

    5.修改mysql root的密码:

    第一次设置root密码可以使用以下命令:

    mysqladmin -u root password NEWPASSWORD

    如果你已经设置过密码了,需要要以下命令:

    1

    mysqladmin -u root -p'oldpassword' password newpass

    比如说,旧密码是“12345”,新密码是“nowamagic”,执行以下命令:

    1

    mysqladmin -u root -p'12345' password 'nowamagic'

    修改其它MySQL用户的密码

    修改一个普通用户的密码你可以使用以下命令,比如用户是 nmuser:

    1

    mysqladmin -u nmuser -p oldpassword password newpass

    另一种修改密码的方法是,MySQL 服务器把用户名和密码储存在 MySQL 数据库的 user 表中。你可以使用以下方法来直接更新用户 nmuser 的密码:

    1. 登录mysql服务器:

    mysql -u root -p

    2. 选择 MySQL 数据库

    mysql> use mysql;

    3. 修改 nmuser 密码

    mysql> update user set password=PASSWORD("NEWPASSWORD") where User='nmuser';

    4. 重置权限

    mysql> flush privileges;

    mysql> quit

    这种方法也可以用脚本(PHP,Perl)执行,不用SSH到服务器。

    主从配置

    1. 分别登录master机和slave机的mysql:mysql –u root –p

    创建数据库:create database repl;

    2. 1、修改master机器中mysql配置文件my.cnf,该文件在/etc目录下

    在[mysqld]配置段添加如下字段

    server-id=1

    log-bin=log

    binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库

    binlog-ignore-db=mysql //被忽略的数据库

    在master机上为slave机添加一同步帐号

    grant replication slave on *.* to 'repl'@'192.1681.220' identifiedby '123456';

    表示192.1681.220上的slave可以使用repl/123456帐号在master机器上进行replication同步数据的操作。

    3 . 重启master机的mysql服务:service mysqld restart

    4. 用show master status 命令看日志情况

    mysql>show master status;

    +-----------------+------------+-------------------+-----------------------+

    |File |Position | Binlog_Do_DB |Binlog_Ignore_DB |

    +-----------------+------------+-------------------+-----------------------+

    | log.000003| 98 |repl |mysql |

    +-----------------+------------+-------------------+-----------------------+

    1 row in set (0.00 sec)

    5. 修改slave机中mysql配置文件my.cnf。

    同样在[mysqld]字段下添加如下内容

    server-id=2

    在从库上执行如下命令:

    change master to master_host='10.171.244.109',

    master_user=' repl ',

    master_password='123456',

    master_log_file=" log.000003",

    master_log_pos=98;

    表示用帐号密码登录到master库上去,在master库的log.000003 binlog的98位置处开始做数据同步操作了。

    然后重启slave机的mysql。

    6.在slave机中进入mysql

    mysql>start slave;//开启io线程。

    mysql>show slave status G;

    如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。

    7. 测试主从服务器是否能同步

    在主服务器上面新建一个表,必须在repl数据下

    mysql> use repl

    Database changed

    mysql> create table test(id int,namechar(10));

    Query OK, 0 rows affected (0.00 sec)

    mysql> insert into test values(1,'zaq');

    Query OK, 1 row affected (0.00 sec)

    mysql> insert into test values(1,'xsw');

    Query OK, 1 row affected (0.00 sec)

    mysql> select * from test;

    +------+------+

    | id |name |

    +-------+------+

    | 1 |zaq |

    | 1 | xsw |

    +-------+------+

    2 rows in set (0.00 sec)

    在从服务器查看是否同步过来

    mysql> use repl;

    Database changed

    mysql> select * from test;

    +------+------+

    | id |name |

    +------+------+

    | 1 | zaq |

    | 1 | xsw |

    +------+------+

    2 rows in set (0.00 sec)

    说明已经同步成功了。

    注意一定要在主库上进行增加,修改和删除的操作,然后同步到从库去,从库只能提供查询,不能对从库的数据进行增加,修改和删除的操作。

    原理探究

    MySQL同步功能由3个线程(master上1个,slave上2个)来实现。执行 START SLAVEDE语句后,slave就创建一个I/O线程。I/O线程连接到master上,并请求master发送二进制日志中的语句。master创建一个线程来把日志的内容发送到slave上。这个线程在master上执行 SHOW PROCESS LIST 语句后的结果中的 Binlog Dump 线程便是。slave上的I/O线程读取master的 Binlog Dump 线程发送的语句,并且把它们拷贝到其数据目录下的中继日志(relay logs)中。第三个是SQL线程,salve用它来读取中继日志,然后执行它们来更新数据。

    如上所述,每个master/slave上都有3个线程。每个master上有多个线程,它为每个slave连接都创建一个线程,每个slave只有I/O和SQL线程。

  • 相关阅读:
    python-pandas
    iOS7程序内部如何打开评分页面
    iOS 7 UITableview 在Plain模式下 设置背景颜色无效
    Xcode5 运行程序 提示IOS 模拟器未能安装此应用程序
    解决 iOS7 通过tag 找不到 UITableViewCell 的子控件
    Java数据库编程及Java XML解析技术
    JavaI/O 系统
    Java图形用户界面编程
    Java中枚举的使用
    Java集合框架
  • 原文地址:https://www.cnblogs.com/zhanghaiyang/p/7212910.html
Copyright © 2011-2022 走看看