Linux安装MySql以及主从配置

安装方式

  • yum install -y mysql-server #yum安装,需要外网环境

  • 将rpm文件,传送给linux,然后,通过rpm指令完成安装

  • yum install yum-plugin-downloadonly 下载yum download插件,可以不安装只下载安装包

  • yum install -y mysql-server --downloadonly --downloaddir=/usr/local 下载安装包到 /usr/local

  • rpm -ivh perl-*.rpm #安装所有perl依赖

  • rpm -Uvh mysql-libs-5.1.73-7.el6.i686.rpm #更新mysql的类库

  • rpm -ivh mysql-5.1.73-7.el6.i686.rpm mysql-server-5.1.73-7.el6.i686.rpm #安装mysql主服务

  • yum -y install wget 下载wget工具

    wget -P /root http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 下载某文件到 /root目录

启动mysql服务

  • chkconfig 查看服务
  • service mysqld start/stop/restart/status mysql服务的开启、停止、重启和状态
  • 如下命令,在初次开启mysql服务后,会提示给用户
    mysqladmin -u root password '123';
    如果已经有密码存在,要修改的话
    mysqladmin -u root -p password 'new_pwd'; 之后输入旧密码回车即可

远程权限

  • 到mysql库的user表中
  • update user set host='%',password=password('123456') where host='127.0.0.1'; #添加可以远程访问的账号,%表示任何【网关】,只要有该数据库的账户和密码就都可以访问
  • flush privileges; #必须刷新权限,保证新添加的账号可用
  • 关闭linux的防护墙,保证3306可以访问

防止mysql本地客户端数据乱码(了解)

/etc/my.cnf 中添加如下配置,即可
[client]
default-character-set=utf8

如上配置只作用客户端,要保证程序中数据不乱码:建库,建表时必须指定统一的字符集即可

注意,新建库的时候使用【default charset=utf8】

新建表的时候使用【engine=innodb default charset=utf8】

mysql卸载

  • rpm -e mysql-server #只需卸载主服务即可
  • rm -rf /var/lib/mysql #删除所有mysql的数据

root密码找回

  • 到 /etc/my.cnf下添加配置

    [mysqld]
    ...
    skip-grant-tables   #注意,建议在拆除网线的情况下添加  (而且添加配置后,需要重启mysqld服务)
    
  • mysql -u root -p即可登录mysql

  • update user set password=password(‘123’) where xxxxxx;//修改密码
    flush privileges;即可

  • 将my.cnf的配置删除或注释


Mysql主从架构

一般情况下,会有会有一个主机,主要负责增删改,配有很多的从机,只能进行读取,这样保证了 读写分离,释放了主机的压力。

另外,一般公司都会将数据库放于内网,连接内网的人员都可以访问,内网与tomcat进行连接,这里是有网关的限制,非该内网网关不能访问内网,然后tomcat的另一端开放端口,供公网使用。

1. 克隆虚拟机

在克隆从机删除如下配置

克隆的虚拟机的网络适配,使得虚拟机可以进入局域网

  • vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 删除 HWADDR所在行
    UUID所在行
  • 将/etc/udev/rules.d/目录中的
    70-persistent-net.rules文件删除
  • 重启虚拟机:reboot

2. 两台主机,各自安装mysql

参考之前的mysql安装过程即可.

一台做主机,一台做从机。

注意必须修改 my.cnf文件为utf-8格式

3. 搭建数据库

主机和从机上的库名一致

注意,新建库的时候使用【default charset=utf8】

新建表的时候使用【engine=innodb default charset=utf8】

4. 配置"主机"

4.1 配置

找到 /etc/my.cnf
在[mysqld]下配置:

server-id=9        // id
log-bin=zhj-bin    // 二进制日志文件的名称,有此配置即为“主机”
binlog-do-db=db9   // 要记录二进制日志的数据库,可以有多个,如下
binlog-do-db=db10
binlog-do-db=db11 
binlog_format=MIXED  // 兼容 日志和read-commit
expire_logs_days=10  // 日志超时时间

4.2 重启主机

重启主机:service mysqld restart

4.3 查看主机状态

查看主机状态:

mysql>show master status;
*记录下file字段值,和position字段值以及Binlog_Do_DB,要告知给从机
rj-bin.000001  106 db01

5. 配置"从机"

5.1 配置

找到 /etc/my.cnf
在[mysqld]下配置:

server-id=10
replicate-do-db=db01 #要复制的哪个库
master-connect-retry=60 #60s后重连主机

#注意关闭防火墙

5.2 同步数据

同步主从数据

如果主机已经有数据,则需要将数据同步到从机

#主机导出数据库db9中的数据:
[root@zhj ~]# mysqldump -u root -h 192.168.80.128 -p db01 > /root/hh.sql (之后输入密码即可)
在root目录下找到对应的hh.sql文件放到从机中,然后执行下面的方法,注意文件必须是【utf-8】格式
需要通过win主机进行中转才能导入到另一个虚拟机中
#从机登录mysql,并选择数据库db9,然后执行如下:
mysql> use db9;
mysql> source /root/hh.sql;

5.3 重启从机

重启从机

[root@zhj ~]# service mysqld restart

5.4 主从同步

在从机下配置
[root@zhj ~]# mysql -u root -p111111 # 登录mysql
mysql> slave stop;   #停止slave同步进程
mysql> change master to master_host='192.168.1.66',master_user='root'
						,master_password='123',master_log_file='rj-bin.000001',master_log_pos=106;
mysql> slave start;    #开启slave同步进程

5.5 查看从机状态

mysql> SHOW SLAVE STATUS\G   #查看slave同步信息(G后不要加分号)

注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!

如果Slave_SQL不同步,则执行下面代码,解决因为事务回滚导致的问题:

mysql> slave stop;

``mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;`

mysql> slave start;

6. 细节

mysql的bin-log和read-commit有冲突

需要在主机的my.cnf的[mysqld]中配置:

binlog_format=mixed //即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章