Windows安装子Ubuntu
Ubuntu更新源
Ubuntu自带的软件源列表更新很慢,所以我们切换成阿里提供的软件源列表。
# 备份自带的软件源列表
cp /etc/apt/sources.list /etc/apt/sources.list.back
# 删除自带的软件源列表文件
rm -rf /etc/apt/sources.list
# 新建软件源列表文件
vim /etc/apt/sources.list
# 将下面阿里提供的软件源列表内容复制到sources.list文件中
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
安装Mysql
安装MySQL:apt-get install mysql-server
设置root密码:
查看Mysql服务状态:service mysql status
启动Mysql服务:service mysql start
重启Mysql服务:service mysql restart
登录Mysql:mysql -h127.0.0.1 -uroot -p123456
Mysql目录介绍
停止Mysql服务:mysqladmin -u root -p shutdown
默认配置文件目录:/etc/mysql/mysql.conf.d/mysqld.cnf
默认数据存储目录:/var/lib/mysql
启动mysql服务器:/etc/init.d/mysql start/stop
指定配置文件启动服务:mysqld --defaults-file=/etc/my.cnf --user=root
mysqld服务器:/usr/sbin/mysqld
客户端程序和脚本:/usr/bin
Mysql多实例安装
新建配置文件:cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my_3307.cnf
新建数据文件并授权:
mkdir -p /home/mysql/data/mysql3307
chown -R mysql:mysql /home/mysql/data/mysql3307
vim /etc/apparmor.d/usr.sbin.mysqld
在 # Allow data files dir access中添加:
/home/mysql/data/mysql3307/ r,
/home/mysql/data/mysql3307/** rwk,
重启apparmor 服务: service apparmor restart
修改my_3307.cnf配置文件:vim /etc/mysql/my_3307.cnf
内容如下:
[mysqld_safe]
socket = /home/mysql/data/mysql3307/mysqld_3307.sock --修改为3307
#nice = 0 --注释掉
[mysqld]
user = mysql
pid-file = /home/mysql/data/mysql3307/mysqld_3307.pid --修改为3307
socket = /home/mysql/data/mysql3307/mysqld_3307.sock --修改为3307
port = 3307 --修改为3307
basedir = /usr
datadir = /home/mysql/data/mysql3307 --修改为新建的数据文件
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover-options = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /home/mysql/data/mysql3307/error.log --修改为新建的数据文件
expire_logs_days = 10
max_binlog_size = 100M
初始化数据库:sudo /usr/sbin/mysqld --defaults-file=/etc/mysql/my_3307.cnf --user=mysql --datadir=/home/mysql/data/mysql3307 --initialize
启动Mysql:sudo /usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf --datadir=/home/mysql/data/mysql3307
登录Mysql客户端发现root密码未知:
设置root账号密码:
首先需要杀掉3307这个实例进程,然后使用安全模式创建实例。
ps -ef|grep 3307
kill <pid> --执行账户为mysql,详细信息含有3307
重新启动该进程,带上--skip-grant-tables
参数,跳过身份验证:/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf --datadir=/home/mysql/data/mysql3307 --skip-grant-tables
登录Mysql客户端,不需要输入密码,直接按回车,进入mysql:mysql -uroot -p -S /home/mysql/data/mysql3307/mysqld_3307.sock
修改root密码:update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';
刷新权限:flush privileges;
再次登录,就可以使用上面配置的密码了:mysql -h127.0.0.1 -uroot -p -P3307
发现如果用navicat登录出现错误:
解决方案如下:
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;
停止3307服务:目前只发现使用杀进程的方式来停止
启动3307服务:/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my_3307.cnf --datadir=/home/mysql/data/mysql3307
启动mysql 3306实例:service mysql start
主从配置
先按照同样的方式再创建一个3308服务。3307作为主,3308作为从。
配置master
修改master配置:vim /etc/mysql/my_3307.cnf
内容如下:
[mysqld]
## 设置server_id,一般设置为IP,同一局域网内注意要唯一
server_id=100
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,可以随便取,最好有含义(关键就是这里了)
log-bin=edu-mysql-bin
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
重启master服务。
进入master客户端,创建数据同步用户:
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
配置slave
修改slave配置: vim /etc/mysql/my_3308.cnf
内容如下:
[mysqld]
## 设置server_id,一般设置为IP,注意要唯一
server_id=101
## 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=edu-mysql-slave1-bin
## 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
## 主从复制的格式(mixed,statement,row,默认格式是statement)
binlog_format=mixed
## 二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## 防止改变数据(除了特殊的线程)
read_only=1
重启slave服务。
配置master和slave链接
进入到master客户端,查看master状态,并记录下File、Position值,在配置slave的时候用到:show master status;
进入到slave客户端,执行命令:(注意修改成自己的主机、user、端口、file、pos)
change master to master_host='127.0.0.1',
master_user='slave',
master_password='123456',
master_port=3307,
master_log_file='edu-mysql-bin.000001',
master_log_pos=617,
master_connect_retry=30;
- master_host: Master 的IP地址
- master_user: 在 Master 中授权的用于数据同步的用户
- master_password: 同步数据的用户的密码
- master_port: Master 的数据库的端口号
- master_log_file: 指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
- master_log_pos: 从哪个 Position 开始读,即上文中提到的 Position 字段的值
- master_connect_retry: 当重新建立主从连接时,如果连接失败,重试的时间间隔,单位是秒,默认是60秒。
发现这个错误,意思是必须使用alter user来重置密码,解决方案:alter user 'root'@'localhost' identified by '123456';
执行以下命令,开始开启主从同步: start slave;
在 Slave 的 MySQL 终端执行查看主从同步状态: show slave status \G;