Ubuntu下安装Mysql(5.5)和主从功能配置
经过几天的折腾,终于把Mysql主从功能配置好了,其实配置很简单,不过还是遇到了各式各样的错误,下面总结一下,
在安装之前,可以先ping一下两台服务器是否可以互相通信,
在ubuntu下在线安装Mysql相对比较简单,输入如下命令便可自动安装完成。
sudo apt-get install mysql-server
安装的过程中如果无法正常获取源数据,可以使用以下命令安装更新ubuntu的数据源
sudo apt-get update
我们可以通过netstat -tap|grep mysql来查看系统是否已经有了mysql服务
查询mysql 是否在运行,如输入一下命令
service mysql status
mysql start/running, process 10786
Mysql远程登录测试
在主机上添加一个账户slave
进入mysql
输入以下的命令
grant replication slave,reload,super on *.* to slave@xx.103.118.99 identified by 'slave' ;
其中"slave@xx.103.118.99"的slave是用户名,密码是'slave';
查看授权是否成功,可以输入以下命令:
select user ,host,password from mysql.user
在从机上进行测试,输入:
mysql -u slave -h xx.103.118.92 –p
若成功,显示如下:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 38
Server version:5.5.28-0ubuntu0.12.04.3-log (Ubuntu)
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
若出现如下错误,
ERROR 2003 (HY000): Can't connect to MySQL server on "host" (111)
需要修改主机的配置文件将地址绑定给注释掉(/etc/mysql/my.cnf):
#bind-address = 127.0.0.1 <---注释掉这一行就可以远程登录了
Mysql的主从复制原理很简单,就是从服务器读取主服务器的binlog,然后根据binlog的数据库操作记录来更新数据库。根据这一原理,可以对my.cnf配置文件进行相应的修改
主要添加如下配置:
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=test 要进行主从复制的数据库
binlog_ignore_db=information_schema 不需要进行主从复制的数据库
配置好后重启mysql
sudo /etc/init.d/mysql restart
进入mysql,输入:
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+--------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+--------------------+
| mysql-bin.000011 | 107 | test | information_schema |
+------------------+----------+--------------+--------------------+
1 row in set (0.00 sec)
从机配置:(/etc/mysql/my.cnf):
server-id=2(不可以和主机id一样)
log_bin=/var/log/mysql/mysql-bin.log
replicate-do-db=test 要进行主从复制的数据库
replicate-ignore-db=information_shcema 不需要进行主从复制的数据库
配置好后重启mysql
sudo /etc/init.d/mysql restart
进入mysql,输入
stop slave;
change master to
master_host='xx.103.118.92',master_user='slave',master_password='slave',master_log_file='log.000011',master_log_pos=107;
start slave;
show slave status\G;
如果出现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上两项都为Yes,那说明没问题了。
可以在主机上进行数据操作,看看从机是否会自动同步
若在从机遇到下面的错误,主要是主从同步的问题,Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in
binary log index file'
可以执行一下命令
stop slave;
reset slave;
start slave;
安装成功后,我又重新安装配置了几次,发现如果没有执行reset slave,问题就无法解决。
来源:oschina
链接:https://my.oschina.net/u/264841/blog/99808