您的位置:首页 > 博客中心 > 数据库 >

mysql服务器(一)

时间:2022-03-14 10:24

mysql服务器

1、mysql安装

版本:mysql-advanced-5.6.23-linux-glibc2.5-x86_64

具体可以参考目录下的INSTALL-BINARY文件

#安装mysql,将mysql压缩解压到/usr/local

tar zxvf mysql-advanced-5.6.23-linux-glibc2.5-x86_64.tar.gz -C /uar/local/mysql

cd /usr/local

ln -s mysql-advanced-5.6.23-linux-glibc2.5-x86_64 mysql

cd mysql

#添加mysql用户和群组

groupadd mysql

useradd -r -g mysql mysql

#修改相关目录和文件属主和所属群组

chown -R mysql .

chgrp -R mysql .

或者:chown -R mysql:mysql .

#将目录属主更改为root,避免mysql用户将目录删除

chown -R root .

chown -R mysql data

#使用mysql用户权限来初始化数据库

scripts/mysql_install_db --user=mysql --datadir=/data --keep-my-cnf --no-defaults

#会提示缺少perl-modules

#FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db

yum -y install perl-Module-Install.noarch

#缺少依赖包libaio

#error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

yum -y install libaio-devel

#将mysql添加为服务

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

#将mysql的bin目录加入到PATH环境变量

#在/etc/profile最后面添加

PATH=$PATH:/usr/local/mysql/bin

source /etc/profile

#脚本初始化已经添加mysqld脚本,如果没有直接cp /etc/init.d/mysqld

/etc/rc.d/init.d/mysqld

#启动mysql

/usr/local/mysql/bin/mysqld_safe &

#更改mysql root密码提示

#error: ‘Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘

/usr/local/mysqladmin -u root -p password --socket=/var/lib/mysql/mysql.sock

#或者

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

#在/etc/my.cnf 文件socket参数指定为/tmp/mysql.sock

socket=/tmp/mysql.sock

#启动mysql

mysqld_safe --defaults-file=/etc/my.cnf --datadir=/data --pid-file=/tmp/mysql.pid&

#查看mysql启动情况

ps aux | grep mysql

#查看mysql是否在监听端口3306

lsof i:3306

#如图:

技术分享

#mysql已经启动成功

2、基本配置

#待补充

3、数据库备份和还原

(1)添加从服务器复制用户

#给192.168.137.31这台主机以用户名slave和密码love从主服务器进行同步复制

技术分享

#远程连接错误

#ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘192.168.137.30‘ (113)

#查看错误113

perrot 113

#由于启用防火墙所致,centos7防火墙默认是firewalld

systemctl stop firewalld.service

systemctl disable firewalld

#关闭开启防火墙前后技术分享

技术分享

技术分享

(2)完全备份和还原

#默认数据库:

技术分享

#创建数据库d1和d2以及表t1和t2。

create database d1;

create database d2;

use d1;

create table t1(id int,name char(50));

insert into t1 value(1,‘t1name1‘);

insert into t1 value(2,‘t1name2‘);

use d2;

create table t2(id int,name char(50));

insert into t2 value(1,‘t2name1‘);

insert into t2 value(2,‘t1name2‘);

技术分享

#备份数据库d1和d2表数据,-l会将所有表锁定,备份完成自动解锁,-F备份完成会重新生成binlog日志:

mysqldump -l -F -u root -p d1 >data/d1.sql

mysqldump -l -F -u root -p d2 >data/d2.sql

#备份所有数据库,包括自带的数据库:

mysqldump --all-databases -l -F -u root -p >data/all.sql


#还原到从服务器:

scp data/d*.sql root@192.168.137.31:/usr/local/mysql/data

#在从服务器执行:

mysql -u root -p

create database d1;

create database d2;

use d1;

source /usr/local/mysql/data/d1.sql

use d2;

source /usr/local/mysql/data/d2.sql

(3)binlog还原数据

#待补充

4、主从复制

(1)从5.1.7版本开始不支持参数

#5.1.7版本开始不支持master-host、master-user、master-password等参数,在配置从服务器时注意需要在从服务器执行:

change master to master_host=‘主服务器IP‘,master_user=‘同步使用用户名(slave)‘,master_password=‘同步用户对应密码(love)‘;

start slave;

(2)binlog日志文件操作

#重新生成binlog日志,假如当前binlog日志为mysql-bin.000004,新生成的binlog日志就是mysql-bin.000005

flush logs;

#重置binlog日志,即binlog日志会从原点开始记录,如双从mysql-bin.000001开始

reset master;

#查看slave状态

show slave status\G;

#可以使用mysqlbinlog来查看binlog日志

mysqlbinlog /data/mysql-bin.000004

(3)配置从服务器

#安装方法与主服务器一样,不重复说明。

#修改root密码

mysqladmin -u root -p password

change master to master_host=‘192.168.137.30‘,master_user=‘slave‘,master_password=‘love‘;

start slave;

show slave status\G;

#由于之前做了从服务器中复制,并且重置了主和从服务器binlog日志,所以需要以下操作

#在主服务器重置binlog日志,生产环境切勿随便重置binlog日志,重置之后会删除起点之后的所有日志文件

#为方便查看同步效果,如果主服务器已经手动建立过数据库的,应该将它删除,若不删除又不把手动建立的

#数据库备份还原到从服务器,当在主服务器对这些数据库进行增删修时,从服务器由于没有这些数据库,就会报错

#将测试数据库删除,并重置日志文件

drop database d1;

drop database d2;

reset master;

#查看主服务器log_pos位置起点,以便在从服务器设定同步起点,

show master status;

#起点变成120

技术分享

#从服务器

#配置文件

技术分享

server_id:必须唯一

replicate-do-db:指定需要同步的数据库,一个数据库一行

replicate-ignore-db:指定不需要同步的数据库,一个数据库一行

#重置从服务器日志并开启复制

reset master;

stop slave;

change master to master_host=‘192.168.137.30‘,master_user=‘slave‘,master_password=‘love‘;

start slave;

#看到Slave_IO_Running和Slave_SQL_Running状态显示为Yes,可以看出与主服务器连接正常

Slave_IO_Running:负责从主服务器将binlog复制到本地,YES表示复制状态正常,NO表示复制状态不正常或者是无法从主服务器复制。

Slave_SQL_Running:负责从复制到本地的binlog日志中读取positon点和sql语句并执行一遍,并且会将自身操作日志写入到relaylog中继日志中。

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

#从服务器正等待主服务器进行增、删、修操作,一旦主服务器进行这些操作,从服务器在刷新时间内就会根据从主服务器的binlog来同步数据

#Replicate_Ignore_DB显示的是忽略同步的数据库

Replicate_Ignore_DB: mysql,test,information_schema,ignoredb

#需要在my.cnf配置文件添加,一行指定一个数据库

replicate-ignore-db=mysql

replicate-ignore-db=test

replicate-ignore-db=information_schema

replicate-ignore-db=ignoredb

#将复制事件写入到自己的二进制日志文件,中继日志和自己binlog日志默认值开启并且存放在/var/lib/mysql

log-slave-updates

#数据库存放位置可以通过datadir参数来更改

datadir=/data

#日志存放位置可以通过log-bin参数加上绝对路径来修改

log-bin=/binlog/mysql-bin

#如果在启动过mysql之后再修改数据目录存放路径,要先将pid文件、中继日志文件和数据库文件复制到修改后目录,不然在启动mysql总会提示找不到pid文件,而无法启动成功,一般都会将binlog文件和数据库文件分开,避免因磁盘损坏而无法使用binlog恢复数据

#在主服务器上重新建立数据库d1和d2以及t1和t2,可以在从服务器看到很快就会将这两个数据库同步过来

本文出自 “” 博客,请务必保留此出处

本类排行

今日推荐

热门手游