欢迎来到HugNew-拥抱变化,扫一扫右边二维码关注微信订阅号:Martin说 或 加QQ群:427697041互相交流,Stay hungry, Stay foolish.

linux(Ubuntu)下mysql安装及主从复制

linux Martin 1952℃ 1评论

1.MySQL安装

1.1首先检查系统是否已经安装了mysql

终端输入ps -aux | grep mysql 查看是否有mysql进程,没有则表示没有安装,进行下一步。反之,则已安装。

1.2进行mysql安装

mysql安装有两种方式,一是默认apt-get方式,另一种方式是源码包安装。下面分别说下两种方式的安装步骤。

1)第一种方式最简单,因为这种方式安装包相关文件会存放在linux系统指定目录,所以安装完后会自动配置好环境变量,可以直接使用mysql命令。

终端输入sudo apt-get install mysql-server开始mysql的安装,在安装过程中会让你输入root用户(管理mysql数据库用户,非linux用户)的密码,按照要求输入即可。

安装完后,mysql服务就已经启动。可以通过 netstat -tap | grep mysql或 ps -aux | grep mysql查看 服务是否运行。如果运行则表示安装成功。

mysql安装后的目录结构如下:

数据库存放目录:               /var/lib/mysql/

相关配置文件存放目录:          /usr/share/mysql

相关命令存放目录:             /usr/bin(mysqladmin mysqldump等命令)

启动脚步存放目录:            /etc/rc.d/init.d/

若有不明白的可以参考官方wiki文档

2)源码包安装。首先去官网下载源码包tar文件。企业版和社区版都ok,看个人需求。因为不是默认安装方式,所以这里需要手动配置环境变量。

  • 安装需要的包
sudo apt-get install cmake

sudo apt-get install make

sudo apt-get install bison

sudo apt-get install bzr

sudo apt-get install libncurses5-dev

sudo apt-get install g++
  • 添加mysql用户组和用户
groupadd mysql

useradd -r -g mysql mysql
  • 创建目录
mkdir -p /usr/local/mysql/data
  • 解压在usr/local/目录下并编译
tar -zxvf mysql-5.6.15.tar.gz

cd /usr/local/mysql-5.6.15

cmake .

make

make install

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /mysql
  • 复制配置文件,启动前初始化
cd /usr/local/mysql/support-files
cp my-default.cnf  /etc/my.cnf
cd /usr/local/mysql
./scripts/mysql_install_db --user=mysql

/usr/local/mysql/bin/mysqld_safe --user=mysql --port=3306    --sock=/usr/local/mysql/data/mysql.sock &
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
  • 启动mysql

方法一:

sudo bin/mysqld_safe --user=mysql &

方法二

cp suport-files/mysql.server /etc/init.d/mysql

sudo /etc/init.d/mysql start或sudo service mysql start

然后用命令查看下mysql服务是否正常启动,查看服务命令前文说过,这里不再赘述。

1.3mysql基本配置

1)设置mysql表名大小写不敏感

修改my.conf,在该配置文件[mysqld]下面添加lower_case_table_names=1,如果后期使用中再改变可能会导致drop database失败案例。相关资料参考淘宝mysql内核月报

2) 修改mysql最大连接数
修改my.conf,找到行#max_connections,将行头的‘#’去掉,并修改连接数为max_connections = 1024

3)设置远程访问

取消本地监听。mysql占用的3306端口只在127.0.0.1上监听,拒绝了其他ip的访问,所以需要修改配置文件/etc/my.cnf将bind-address = 127.0.0.1前加上“#”

远程登录授权。远程登录授权方式有两种,这里推荐使用第一种:

方法1 直接授权(推荐)

mysql>grant all privileges on *.* to <user>@"%" identified by '<pwd>' with grant option;
mysql>flush privileges;

方法2 本地登入mysql,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改为”%”

#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

2 配置mysql 主从同步

准备两台机器

主master : 192.168.8.130

从slave  : 192.168.8.131

2.1配置主库

1)授权给从数据库服务器

mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.8.131'      identified by 'test123456';

mysql>FLUSH PRIVILEGES;

2)修改主库配置文件,开启binlog,并设置server-id,每次修改配置文件后都要重启mysql服务才会生效

在该配置文件[mysqld]下面添加下面内容:

[mysqld]

log-bin=mysql-bin   //[必须]启用二进制日志

server-id=130       //[必须]服务器唯一ID,默认是1,一般取IP最后一段

修改配置文件后,重启服务:service mysqld restart

如果启动失败,通过cat /var/log/mysqld.log | tail -30  查看mysql启动失败的日志,从日志内容寻找解决方案。

3)查看主服务器当前二进制日志名和偏移量并记录下来,这个操作的目的是为了在从数据库启动后,从这个点开始进行数据的恢复

#查询主数据库状态

Mysql> show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000005 | 261 | | |

+------------------+----------+--------------+------------------+

主服务器已配置好。

2.2 配置从库

1)修改/etc/my.cnf配置文件,在该配置文件[mysqld]下面添加下面内容:

[mysqld]

log-bin=mysql-bin   //[必须]启用二进制日志

server-id=131       //[必须]服务器唯一ID,默认是1,一般取IP最后一段

2)执行同步sql语句

mysql> change master to

master_host=’192.168.10.130’,

master_user=’rep1’,

master_password=’password’,

master_log_file=’mysql-bin.000005’,

master_log_pos=261;

3)正确执行后启动Slave同步进程

mysql> start slave;

4)主从同步检查

mysql> show slave status\G

==============================================

**************** 1. row *******************

Slave_IO_State:

Master_Host: 192.168.10.130

Master_User: rep1

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000005

Read_Master_Log_Pos: 415

Relay_Log_File: localhost-relay-bin.000008

Relay_Log_Pos: 561

Relay_Master_Log_File: mysql-bin.000005

Slave_IO_Running: YES

Slave_SQL_Running: YES

Replicate_Do_DB:

……………省略若干……………

Master_Server_Id: 1

1 row in set (0.01 sec)

==============================================

其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

注意:如果主服务器已经存在应用数据,则在进行主从复制时,需要做以下处理:

  • 主数据库进行锁表操作,不让数据再进行写入动作
mysql> FLUSH TABLES WITH READ LOCK;
  • 查看主数据库状态
mysql> show master status;
  • 记录下 FILE 及 Position 的值。

将主服务器的数据文件(整个/opt/mysql/data目录)复制到从服务器,建议通过tar归档压缩后再传到从服务器解压。

  • 取消主数据库锁定
mysql> UNLOCK TABLES;

5)验证主从复制效果

主服务器操作数据库,查看从服务器是否正确同步,这里不做过多介绍。

转载请注明:HugNew » linux(Ubuntu)下mysql安装及主从复制

喜欢 (3)or分享 (0)
发表我的评论
取消评论

表情
(1)个小伙伴在吐槽