电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1893 人浏览分享

如何在两台Ubuntu linux上安装mysql server并配置主从复制?

[复制链接]
1893 0
如何在两台Ubuntu linux上安装mysql server并配置主从复制。

设置hostname和hosts

首先,设置houstname。
将两台服务器的/etc/hostname文件分别修改为mysql-master和mysql-slave
然后,设置hosts。分别通过ifconfig命令查看本机ip,并将这两个域名和ip都配置
到各自的/etc/hosts文件中。下面是我配置的/etc/hosts的样本

  1. $ cat /etc/hosts
  2. 127.0.0.1   localhost
  3. # The following lines are desirable for IPv6 capable hosts
  4. ::1     ip6-localhost ip6-loopback
  5. fe00::0ql-masterip6-localnet
  6. ff00::0 ip6-mcastprefix
  7. ff02::1 ip6-allnodes
  8. ff02::2 ip6-allrouters
  9. 192.168.66.146  mysql-slave
  10. 192.168.66.145  mysql-master
复制代码


两台主机上的hosts文件应该是一样的。注意ip和hostname要对上。
重启两台服务器,让hostname生效。重启后可以分别ping一下对方的hostname。

安装mysql

接下来分别在两台服务器上安装mysql server。在ubuntu上可以直
接通过apt命令来安装mysql server

  1. sudo apt-get install mysql-server
复制代码

如果找不到这个组件的话,可能是应为本地apt仓库从来没有更新过,
需要先执行sudo apt-get update命令再安装。

配置my.cnf文件

ubuntu下mysql默认的配置文件是/etc/mysql/my.cnf。

  1. 将mysql-master下的my.cnf文件修改为如下
  2. !includedir /etc/mysql/conf.d/
  3. !includedir /etc/mysql/mysql.conf.d/
  4. [mysqld]
  5. bind-address=0.0.0.0
  6. server-id=1
  7. log-bin=mysql-bin-log
复制代码


设置bind-address是为了让mysql可以被远程连接,server-id也是必须的,两太服务器上的mysql上
的server-id要不一样。log-bin也是一定要开启的,因为主从复制需要用bin log作为媒介。

mysql-slave下的my.conf文件只需要配置一个server-id就可以了,需要一个不重复的数字id。
使用sudo service mysql restart重启两个mysql server。

创建一个mysql用户

接下来在主服务器上创建一个mysql用户,这个用户要配置到从服务器中用来执行复制任务。
连接到主服务器上的mysql server,并执行下面两个命令


  1. mysql> create user 'slave'@'mysql-slave' identified by 'slave';
  2. mysql> grant replication slave on *.* to 'slave'@'mysql-slave';
复制代码


第一条语句创建了一个名叫slave的用户,并只能从mysql-slave主机登录进来,还设置了密码。
第二条语句给该用户赋予了replication slave权限。

可以在mysql-slave上测试一下使用这个帐号是否能够连接到mysql-master上的mysql server。
记录一下上面的用户名和密码,后面会要到。

确保两台mysql server中的数据一致性

连接到mysql-master的mysql server,使用下面的命令flush一下内存并查询当前bin log的position


  1. mysql> flush tables;
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> show master status;
  4. +----------------------+----------+--------------+------------------+-------------------+
  5. | File                 | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  6. +----------------------+----------+--------------+------------------+-------------------+
  7. | mysql-bin-log.000002 |      294 |              |                  |                   |
  8. +----------------------+----------+--------------+------------------+-------------------+
  9. 1 row in set (0.01 sec)
复制代码


记录一下上面的输出的File和Position,后面会用到。

上面输出了当前二进制日志的位置,从现在开始要确保mysql没有任何修改(包括update, insert , c
reate table, alter table等),并保证两台mysql此时的数据完全一样(除了刚才创建的用户)。
因为我是新安装的mysql,所以里面的数据都是一样的。如果你的主从mysql中的数据不一样的话,
可以使用mysqldump命令复制一个副本并重新创建。

在mysql-slave中配置信息并开始复制

登录到mysql-slave上的mysql server,并输入下面的命令

  1. mysql> change master to
  2.     ->     master_host = 'mysql-master',
  3.     ->     master_user = 'slave',
  4.     ->     master_password = 'slave',
  5.     ->     master_log_file = 'mysql-bin-log.000002',
  6.     ->     master_log_pos = 294 ;
复制代码


请将里面的五个参数修改为你自己的参数,第一个参数是在第一步配置的主服务其的hostname,
第二个和第三个参数是在主服务器上创建的具有replication slave权限的mysql用户,
最后两个参数是主服务器当前的二进制日志的信息。

然后,使用start slave;命令来让从服务器开始复制。
可以使用show slave status\G来查看复制的信息。

至此,主从复制已经配置好了,你可以在主服务器上做一些操作,再检查一下
从服务器上是否已经同步了相关的改动。

忽略部分数据库

如果从服务器并不想复制主服务器的所有数据库,可以在从服务器的my.cnf中配置

  1. [mysqld]
  2. replicate-ignore-db=db1
  3. replicate-ignore-db=db2
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.