在网上搜索了很多资料,都没有看到像样的文档,思路不是很清晰,对第一次安装的朋友来说较为困难,经过长时间的安装尝试和查询网上零碎的知识点,终于成功的完成Linux系统下多MySql数据库安装和主从配置,现在分享给大家。
前提:
1、关闭Liunx系统的防火墙,如果忘了,你下面的测试连接必定会失败,切记,切记,切记。
2、下载linux系统自带的mysql
查找已安装的myslq 版本:#rpm -qa | grep mysql #(注意大小写,如果mysql 不行就换MySQL)
将搜索出的包名卸载:
#rpm -e --nodeps mysql-5 .0 .22-2 .1 .0 .1 #(nodeps表示强制删除)
再次查找该包名,如果没有结果输出则表明已将该版本的mysql卸载了 ;
3、yum安装lrzsz和cmake
yum -y install lrzsz;
yum -y install cmake;
首先熟悉MySql数据库,很多人都是直接安装原生版的MySql数据库(就是官网上下载的数据库安装包),也有人用的是MySql的衍生版数据库,如percona,我用的就是这种,下面我会分别说明原生版和衍生版MySql数据库的安装和主从配置。
Linux下多个原生版MySql数据库的安装及主从配置:
1、下载MySql数据库http://dev.mysql.com/downloads/mysql/5.5.html#downloads
下载的是64位系统,我使用的是CentOS6.6 64位系统
2、安装第一个数据库
-- cd /usr/local/src
-- mkdir mysql
-- cd mysql
-- rz(上传安装包)
-- tar -xvf MySQL-5.5.47-1.linux2.6.x86_64.rpm-bundle.tar
-- rpm -ivh MySQL-server-5.5.47-1.linux2.6.x86_64.rpm
-- rpm -ivh MySQL-client-5.5.47-1.linux2.6.x86_64.rpm
-- rpm -ivh MySQL-devel-5.5.47-1.linux2.6.x86_64.rpm
到这里就安装结束了
3、启动数据库、修改数据库密码和登录数据库
-- service mysql start
-- mysqladmin -uroot password ‘root’
-- mysql -uroot -proot
4、提供远程连接的权限
在登录mysql的状态下执行下面的命令
-- grant all privileges on *.* to 'root' @'%' identified by 'root';
-- flush privileges;
执行结束后使用外部的工具连接库,我这里使用的是navicat,连接的时候会报这样测错误:
就因为这个错误,让我苦苦研究很长时间,其实解决起来很方便的。下面是解决方案:
rpm安装原生版的mysql是没有my.cnf文件的,在网上查各种资料都是让我修改my.cnf配置文件,但是我始终没有找到这个文件,后来在网上看到博友的博文这里将截图贴上如下:
主要看第二种说法,我的操作如下:
-- cd /usr/share/mysql
-- cp my-medium.cnf /etc/
-- cd /etc
-- mv my-medium.cnf my.cnf
-- vim my.cnf
配置文件中许多内容都是被我注释了,但是不注释也没有太大的影响,但是主要是找到bind-address =
127.0.0.1,如果有就注释掉,没有就不用管了,我当时在我的配置文件中是没有找到这句话的。接下来是在配置文件的[mysqld]这句话下一行添
加一句话skip-name-resolve,保存文件,重新启动数据库(命令:service mysql
restart),这个时候再远程连接数据库就可以连接的上了(如图)。
好了,到此为止第一个Mysql数据库就安装成功了。
5、第二个Mysql数据库的安装之创建目录
-- cd /usr/local
-- mkdir mysql
-- cd mysql
-- mkdir data
-- mkdir etc
-- mkdir logs
-- mkdir var
-- chown mysql:mysql /usr/local/mysql/ -R
-- cp /etc/my.cnf /usr/local/mysql/etc/
-- vim /usr/local/mysql/etc/my.cnf
这里需要将所有的内容都注释掉,然后添加下面的内容:
[mysqld]
skip-name-resolve
port=3307
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql-3307.sock
user=mysql
log_error=/usr/local/mysql/logs/db_error.log
# Disabling symbolic-links is recommended to prevent assorted securityrisks
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql/logs/db_error.log
pid-file=/usr/local/mysql/mysqld-3307.pid
保存配置文件,准备安装
6、安装第二个Mysql数据库、启动数据库
上面的配置文件都配置好了,接下来就是安装了
安装命令:
/usr/bin/mysql_install_db
--defaults-file=/usr/local/mysql/etc/my.cnf --basedir=/usr/
--datadir=/usr/local/mysql/data --user=mysql
启动数据库
/usr/bin/mysqld_safe --defaults-file=/usr/local/mysql/etc/my.cnf &
7、修改密码、登录、设置远程访问权限
修改密码:
mysqladmin -h127.0.0.1 -P3307 -uroot password "root"
登录:
mysql -uroot -h127.0.0.1 -P3307 -p
设置远程访问权限:
grant all privileges on *.* to 'root' @'%' identified by 'root';
flush privileges;
到此第二个数据库就安装结束了,这里测试连接就不演示了,和上面的一样,这里的skip-name-resolve已经在修改配置文件的时候加上了,正常安装启动时不会出现问题的。
8、主从配置之配置主数据库
-- vim /etc/my.cnf
在[mysqld]所在行下另起一行,加上下面的几句话
log-bin=mysql3306-bin
//test表示主从之间需要同步的数据库,如果有多个就用逗号隔开,但是需要同步的数据库较多时建议直接不写这句话,因为逗号隔开可能会存在一些问题,直接不写这句配置,表示同步整个数据库
binlog-do-db=test
server-id=101 //这里的服务id可以是任意值,但是要保证唯一
配置文件修改完毕,保存配置文件,重启数据库。
使用navicat数据库工具执行命令:SHOW MASTER STATUS查看主库的状态如下(不同数据库值不同,记住这两个值):
下面就是为从库创建用户:
grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by'123456';
flush privileges;
这里的127.0.0.1需要根据你的从数据库所在机器的ip配置,要是觉得指定ip容易出错,就直接使用“%”代替。
小插曲:
上面的两句sql命令在我的navicat中无法执行,如果博友你也出现这种情况,不防直接命令行连接数据库执行这两句话,效果一样。
好了,到此为止主数据库就配置完成喽!
9、主从配置之配置从数据库
-- vim /usr/local/mysql/etc/my.cnf
这里配置相对主库较为简单,只要配置[mysqld]下中的一个server-id即可,唯一需要注意的是server-id的唯一性,保存配置文件,重新启动数据库(用
ps -ef | grep mysql 查询到3307 从数据库的进程编号,kill命令(kill
xxx)杀死3307从数据库的进程,然后重新执行启动数据库命令就好,注意从数据库启动和主数据库的不同)。
然后使用navicat工具执行下面的sql语句:
CHANGE MASTER TO
master_host='127.0.0.1',
master_user='slave01',
master_password='123456',
master_port=3306,
master_log_file=' mysql3306-bin.000002',
master_log_pos= 1942;
启动从数据库的同步:
START SLAVE;
查看从数据库的状态:
SHOW SLAVE STATUS;
注意看其中的两个值:
这两个都为“yes”才是成功,有一个为“no”都不行。
现在就测试修改数据吧!
首先在主库中随便修改一条数据并保存,到从库刷新,看是否同步,如果是同步了恭喜你成功了。
启动从库常见问题:
报错信息:
代码如下:
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
意思很明显:就是两个mysql的server-id的值不唯一或者一致了。需要修改成不一样的才行。
如果不确定各自的值为多少时可以启动两个数据后分别进入到不同端口的mysql界面查看这个server-id的值:
使用如下命令查看了一下server_id
复制代码代码如下:
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
如果一样的就修改下,改成不一样的就可以了,然后重新启动主库和从库,把原来的slave01用户删了,重新设置slave01用户以及后面的操作。
如果还有问题可参见这个博客,我也是从这里获得帮助的:
======================================================================================
Linux下多个衍生版Mysql的安装和主从配置:
1、下载衍生版数据库Percona,地址:https://www.percona.com/downloads/Percona-Server-5.6/LATEST/
2、安装第一个数据库
-- cd /usr/local/src
-- mkdir mysql-percona
-- cd mysql-percona
-- rz(上传安装包)
-- tar -xvf Percona-Server-5.5.47-37.7-r764f304-el6-x86_64-bundle.tar
-- rpm -ivh Percona-Server-shared-55-5.5.47-rel37.7.el6.x86_64.rpm
-- rpm -ivh Percona-Server-client-55-5.5.47-rel37.7.el6.x86_64.rpm
-- rpm -ivh Percona-Server-server-55-5.5.47-rel37.7.el6.x86_64.rpm
这里安装结束后和原生版的不同,这个会自动生成一个my.cnf文件保存在/etc目录下。
启动服务(service mysql
start)、修改root用户密码、登录、设置远程连接权限、以及修改my.cnf配置文件内容和上面的原生版相同(注意这里是修改内容步骤一样,这里
不再需要从其他目录拷贝文件到/etc目录下并改文件名,因为衍生版安装时会自动生成一个my.cnf文件保存在/etc目录下)。
记得重新启动数据库,连接测试。
3、安装第二个衍生版Mysql数据库很简单,这里安装的步骤和安装第二个原生版Mysql是完全相同的,这里就不多说了。
4、主从配置
这里的主从配置和原生版的是完全相同的,不再赘述。