Retrieve Data from Remote MySQL Server

2018-01-22

安装mysql&mariadb

Mac下安装

homebrew安装

首先执行:

1
brew search mysql

来搜索电脑上的mysql,如果已安装,直接使用即可
如果要更换版本应使用:

1
brew upgrade MySQL

如果未安装,可以通过:

1
brew install mysql

or

1
brew install mysql@major.minor

来安装
major代表大版本,minor代表小版本,例如安装mysql5.6指令为:

1
brew install mysql@5.6

brew会帮用户配置好环境,安装完成即可使用mysql的一系列命令
可以通过mysql help查询,mysql的默认用户为root,没有密码(如果有密码,应同为root)
通过

1
mysql -u root

or

1
mysql -u root -p

登陆本地mysql server
(登陆指令有非常多种组合,若有疑问,请百度,或先自己尝试)

更改密码指令为mysqladmin -u root -p password "newpassword",newpassword替换为想要的密码,若为""表示不需要密码

rpm文件安装

如果想要删除homebrew安装的mysql,请先uninstall之后,在目录下删除mysql相关的目录及文件再进行安装
否则可能导致冲突,使mysql安装后却无法使用

一般个人用户使用MySQL Community Server,可以根据自己操作系统进行选择
安装成功后可以在system preference中看到mysql图标,点击进入,通过面板上的按钮来启动或停止mysql server
(更改配置文件时,建议先停止mysql server,以免出现未知问题)
安装时会自动生成一个密码,记住它,在之后需要它来登陆、修改密码等
但是通过rpm安装,mysql就需要手动添加至系统环境变量
首先输入:

1
vi ~/.bahs_profile

将mysql添加至系统环境变量中:

1
2
#mysql
export PATH="/usr/local/mysql/bin/:$PATH"

保存关闭文件,在命令行输入:

1
source ~/.bash_profile

使该配置生效,接下来,我们就可以输入mysql相关指令进行操作

Centos7下安装

在CentOS7中,yum中的数据库替换为了mariadb
mariadb基本兼容mysql
(7以下版本没有尝试过,如果有需要请参照官网)
首先检查系统中是否已安装mariadb:

1
yum list maria*

如果已安装老版本的mariadb,要进行更新,应该先remove已有的mariadb-libs

安装mariadb指令为:

1
sudo yum install mariadb-server mariadb

对于mariadb的启用与停止,使用:

1
systemctl start/stop/restart mariadb

来进行操作
如果发生了什么错误,请在/var/log/mariadb/mariadb.log查看日志

远程获取数据

使用mysqldump

1
mysqldump -uroot -proot -hhost database_name table_name > /path/to/target/file/file_name.sql

--where="1 other_commands"附加搜索条件,开头的数值1表示select *
--no_data表示指提取数据库表结构
--no-create-info指提取数据
--fields-terminated-by=, --fields-enclosed-by='"'用于输出csv格式,属性分隔符,,以"括起

大部分情况可以使用,如果遇到错误,先排查是否属于权限不足(包括用户权限,目标路径的权限)

导出成.csv格式也可以使用:

1
mysql -A database_name -hhost -uroot -proot -ss -e "SELECT * from table_name;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > /path/to/target/file/file_name.csv

csv只是一种文本规范,本质上还是纯文本格式

使用mysql commands导出

首先使用:

1
SELECT @@GLOBAL.secure_file_priv;

查询mysql的文件导入导出路径

在mysql client中,使用:

1
select * from table_name into outfile '/var/lib/mysql-files/ebike_record.csv' fields terminated by ',' enclosed by '"' lines terminated by '\n';

导出文本,需要补足分隔符、换行符等。

大量数据导出

首先执行:

1
mysql --help

将提示Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
意思是mysql将按以下顺序读取配置文件。不同系统的配置文件存放的目录不同。
我设置过的属性为:

1
2
3
4
5
6
innodb_buffer_pool_size = 4G
innodb_log_buffer_size = 268435456
innodb_log_file_size = 1G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
max_allowed_packet=1024M

应根据各自需求,查看文档进行设置。
注意上下限问题,以及更改配置时,最好关闭mysql server

InnoDB Error

如果遇到了与InnoDB相关的错误,首先在mysql中输入:

1
2
SHOW VARIABLES LIKE 'innodb_fast_shutdown'
SET GLOBAL innodb_fast_shutdown=1;

innodb_fast_shutdown与server关闭速度有关,查看这里以及这里
然后停止mysql server
接下来删除
/var/lib/mysql(CentOS7)

/usr/local/mysql/data(Mac)
目录下的ib_logfile*文件
然后修改配置,保存之后启动服务

Aozaki Touko

..-. . -.