#一、下载
略
#二、主服务器配置
-
添加mysql用户
groupadd mysql useradd -r -g mysql mysql
-
环境变量配置(可省略)
创建目录连接
ln -sv /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql
设置环境变量
/etc/profile export PATH=$PATH:/usr/local/mysql/bin source /etc/profile
-
创建data目录(建议data目录不要放在base目录下,容易出错)
(备注:创建数据目录、授权、初始化mysql mysql5.7.7及以上做了很多改变,5.7.7以前安装方法和以前差不多,初始化也保留了mysql_install_db,5.7.7以后则去掉了该脚本,使用了-initialize 或者 --initialize-insecure 参数作为初始化。
mysql5.7.14版本初始化时候已经抛弃了defaults-file参数文件,所以在初始化时候指定配置文件会出错,同时必须保证datadir为空。)
mkdir /data/mysql chown mysql.mysql /data/mysql /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/root/mysql/mysql --datadir=/data/mysql
(使用–initialize的话,会随机生成一个密码,登陆数据库的时候要使用;–initialize-insecure,密码是空)
初始化的时候如果有错误,表示初始化失败,可以查看错误日志,一般都是路径配的有问题。 -
配置my.cnf文件
参考如下:[client] port=3307 socket=/data/mysql/mysql.sock [mysqld] basedir=/root/mysql/mysql datadir=/data/mysql port=3307 server_id=1 socket=/data/mysql/mysql.sock pid-file=/data/mysql/my.pid sync_binlog=1 log-bin binlog-do-db=2 symbolic-links=0 log_slave_updates=1 slow_query_log long_query_time=1 #max_connections=2000 #max_user_connections=1700 #max_connect_errors=2 character_set_server=utf8 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
其中pid-file建议配到data目录下,别的目录可能会出错;
mysql.sock和my.pid建议在同一目录下;这两个配置容易出错,原因多是路径配的不正确,或使用冲突,不要使用默认目录,否则从服务器启动不成功;
另外base和data目录也要重新制定,主从数据库路径应该不同;
5. 配置mysql.server文件(不要忘记)
base和data路径和my.cnf中保持一致
(注释:第二个数据库与此步骤一致)
#三、从服务器运行
- 启动mysql.server
./support-files/mysql.server start
(参数:stop, restart) - 连接数据库
mysql -uroot -h127.0.0.1 -P3307 -p
- 在主服务器上为从服务器添加账户
创建用户
CREATE USER 'dxy'@'localhost' IDENTIFIED BY '123456';
给用户授权
GRANT REPLICATION SLAVE,FILE,RELOAD,SUPER ON *.* TO 'test'@'192.168.8.88'
查看所有授权的用户
select * from information_schema.user_privileges;
~~~~~~至此,主数据库配置完成~~~~~
注意:配置前一定要保证两个版本数据一致,操作前停止一切更新操作(写入、更新、删除等);
#四、从服务器配置
步骤同二,其中1、2可省略,但是端口和路径一定不能重复
#五、从服务器运行
-
启动mysql.server
./support-files/mysql.server start
(参数:stop, restart) -
连接数据库
mysql -uroot -h127.0.0.1 -P3308 -p
-
查看主服务状态
show master status;
-
连接主服务器
change master to master_host='192.168.8.88',master_user='test',master_password='test',master_port=3307,master_log_file='localhost-bin.000003',master_log_pos=506;
-
启动从服务器
start slave;
参数说明:
master_host=主服务器IP
master_user=在主服务器上创建的备份用户名
master_password=备份用户密码
master_log_file=查询master(主服务器)的状态得到的File列的值
master_log_pos=查询master(主服务器)的状态得到的Position列的值
start slave:启动从服务器复制功能
- 查看从服务器状态
show slave status\G;
其中以下两项必须为true
Slave_IO_Running: Yes lave_SQL_Running: Yes
~~~~~至此,从数据库配置完成~~~
#六、验证
在主数据库的某张表中插入一项,查看从数据库内容是否变化,如果是,就是成功。
#七、附录:
-
参考网址
http://www.jb51.net/article/103843.htm
http://blog.csdn.net/testcs_dn/article/details/51423861
http://www.cnblogs.com/zhoujinyi/p/5627494.html
http://www.cnblogs.com/xujishou/p/6306765.html
http://blog.csdn.net/felcon/article/details/52047696 -
可能用到的命令:
查看所有授权的用户
select * from information_schema.user_privileges;
创建用户
CREATE USER 'dxy'@'localhost' IDENTIFIED BY '123456';
给用户授权
GRANT REPLICATION SLAVE,FILE,RELOAD,SUPER ON *.* TO 'test'@'192.168.8.88'
查看用户权限
show grants for dxy@localhost;
查看用户密码
show create user dxy@localhost;
刷新授权
flush privileges;
查找正确的套结子
netstat -ln | grep mysql
备份数据库导出
mysqldump --socket=/data/mysql/mysql.sock --all-databases > database_mysql1.back
备份数据库导入
mysqldump --socket=/data/mysql2/mysql.sock --all-databases < database_mysql1.back
显示数据库的进程列表
show processlist;
查询表中所有数据
select * from tablename;
查询表的结构
show columns from tablename
select * from columns where table_name='表名';
-
忠告
mysql5.7.9以后的版本与之前版本存在差异,需要注意;