GithubHelp home page GithubHelp logo

hrvojem / dbdeployer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from datacharmer/dbdeployer

0.0 1.0 0.0 153 KB

DBdeployer is a tool that deploys MySQL database servers easily.

License: Apache License 2.0

Shell 0.84% Go 99.16%

dbdeployer's Introduction

dbdeployer

DBdeployer is a tool that deploys MySQL database servers easily.

asciicast

Main operations

With dbdeployer, you can deploy a single sandbox, or many sandboxes at once, with or without replication.

The main commands are single, replication, and multiple, which work with MySQL tarball that have been unpacked into the sandbox-binary directory (by default, $HOME/opt/mysql.)

To use a tarball, you must first run the unpack command, which will unpack the tarball into the right directory.

For example:

$ dbdeployer --unpack-version=8.0.4 unpack mysql-8.0.4-rc-linux-glibc2.12-x86_64.tar.gz
Unpacking tarball mysql-8.0.4-rc-linux-glibc2.12-x86_64.tar.gz to $HOME/opt/mysql/8.0.4
.........100.........200.........292

$ dbdeployer single 8.0.4
Database installed in $HOME/sandboxes/msb_8_0_4
. sandbox server started

The program doesn't have any dependencies. Everything is included in the binary. Calling dbdeployer without arguments or with '--help' will show the main help screen.

$ dbdeployer -h
Makes MySQL server installation an easy task.
Runs single, multiple, and replicated sandboxes.

Usage:
  dbdeployer [command]

Available Commands:
  delete      delete an installed sandbox
  help        Help about any command
  multiple    create multiple sandbox
  replication create replication sandbox
  sandboxes   List installed sandboxes
  single      deploys a single sandbox
  unpack      unpack a tarball into the binary directory
  usage       Shows usage of installed sandboxes
  versions    List available versions

Flags:
      --bind-address string      defines the database bind-address  (default "127.0.0.1")
      --config string            config file (default "./dbdeployer.json")
  -p, --db-password string       database password (default "msandbox")
  -u, --db-user string           database user (default "msandbox")
      --gtid                     enables GTID
  -h, --help                     help for dbdeployer
  -i, --init-options strings     mysqld options to run during initialization
      --keep-auth-plugin         in 8.0.4+, does not change the auth plugin
  -c, --my-cnf-options strings   mysqld options to add to my.sandbox.cnf
      --remote-access string     defines the database access  (default "127.%")
      --rpl-password string      replication password (default "rsandbox")
      --rpl-user string          replication user (default "rsandbox")
      --sandbox-binary string    Binary repository (default "$HOME/opt/mysql")
      --sandbox-home string      Sandbox deployment direcory (default "$HOME/sandboxes")
      --version                  version for dbdeployer

Use "dbdeployer [command] --help" for more information about a command.

The flags listed in the main screen can be used with any commands. The flags --my-cnf-options and --init-options can be used several times.

If you don't have any tarballs installed in your system, you should first unpack it (see an example above).

$ dbdeployer unpack -h
If you want to create a sandbox from a tarball, you first need to unpack it
into the sandbox-binary directory. This command carries out that task, so that afterwards 
you can call 'single', 'multiple', and 'replication' commands with only the MySQL version
for that tarball.

Usage:
  dbdeployer unpack MySQL-tarball [flags]

Examples:

    $ dbdeployer --unpack-version=8.0.4 unpack mysql-8.0.4-rc-linux-glibc2.12-x86_64.tar.gz
    Unpacking tarball mysql-8.0.4-rc-linux-glibc2.12-x86_64.tar.gz to $HOME/opt/mysql/8.0.4
    .........100.........200.........292
	

Flags:
  -h, --help                    help for unpack
      --prefix string           Prefix for the final expanded directory
      --unpack-version string   which version is contained in the tarball (mandatory)

Global Flags:
      --bind-address string      defines the database bind-address  (default "127.0.0.1")
      --config string            config file (default "./dbdeployer.json")
  -p, --db-password string       database password (default "msandbox")
  -u, --db-user string           database user (default "msandbox")
      --gtid                     enables GTID
  -i, --init-options strings     mysqld options to run during initialization
      --keep-auth-plugin         in 8.0.4+, does not change the auth plugin
  -c, --my-cnf-options strings   mysqld options to add to my.sandbox.cnf
      --remote-access string     defines the database access  (default "127.%")
      --rpl-password string      replication password (default "rsandbox")
      --rpl-user string          replication user (default "rsandbox")
      --sandbox-binary string    Binary repository (default "$HOME/opt/mysql")
      --sandbox-home string      Sandbox deployment direcory (default "$HOME/sandboxes")

The main command is single, which installs a single sandbox.

$ dbdeployer single -h
single installs a sandbox and creates useful scripts for its use.
MySQL-Version is in the format x.x.xx, and it refers to a directory named after the version
containing an unpacked tarball. The place where these directories are found is defined by 
--sandbox-binary (default: $HOME/opt/mysql.)
For example:
	dbdeployer single 5.7.21

For this command to work, there must be a directory $HOME/opt/mysql/5.7.21, containing 
the binary files from mysql-5.7.21-$YOUR_OS-x86_64.tar.gz
Use the "unpack" command to get the tarball into the right directory.

Usage:
  dbdeployer single MySQL-Version [flags]

Flags:
  -h, --help     help for single
      --master   Make the server replication ready

Global Flags:
      --bind-address string      defines the database bind-address  (default "127.0.0.1")
      --config string            config file (default "./dbdeployer.json")
  -p, --db-password string       database password (default "msandbox")
  -u, --db-user string           database user (default "msandbox")
      --gtid                     enables GTID
  -i, --init-options strings     mysqld options to run during initialization
      --keep-auth-plugin         in 8.0.4+, does not change the auth plugin
  -c, --my-cnf-options strings   mysqld options to add to my.sandbox.cnf
      --remote-access string     defines the database access  (default "127.%")
      --rpl-password string      replication password (default "rsandbox")
      --rpl-user string          replication user (default "rsandbox")
      --sandbox-binary string    Binary repository (default "$HOME/opt/mysql")
      --sandbox-home string      Sandbox deployment direcory (default "$HOME/sandboxes")

If you want more than one sandbox of the same version, without any replication relationship, use the multiple command with an optional "--node" flag (default: 3).

$ dbdeployer multiple -h
create multiple sandbox

Usage:
  dbdeployer multiple MySQL-Version [flags]

Examples:

	$ dbdeployer multiple 5.7.21
	

Flags:
  -h, --help        help for multiple
  -n, --nodes int   How many nodes will be installed (default 3)

Global Flags:
      --bind-address string      defines the database bind-address  (default "127.0.0.1")
      --config string            config file (default "./dbdeployer.json")
  -p, --db-password string       database password (default "msandbox")
  -u, --db-user string           database user (default "msandbox")
      --gtid                     enables GTID
  -i, --init-options strings     mysqld options to run during initialization
      --keep-auth-plugin         in 8.0.4+, does not change the auth plugin
  -c, --my-cnf-options strings   mysqld options to add to my.sandbox.cnf
      --remote-access string     defines the database access  (default "127.%")
      --rpl-password string      replication password (default "rsandbox")
      --rpl-user string          replication user (default "rsandbox")
      --sandbox-binary string    Binary repository (default "$HOME/opt/mysql")
      --sandbox-home string      Sandbox deployment direcory (default "$HOME/sandboxes")

The replication command will install a master and two or more slaves, with replication started. You can change the topology to "group" and get three nodes in peer replication.

$ dbdeployer replication -h
 The replication command allows you to deploy several nodes in replication.
	Allowed topologies are "master-slave" and "group" (requires 5.7.17+)

Usage:
  dbdeployer replication MySQL-Version [flags]

Examples:

		$ dbdeployer replication 5.7.21
		# (implies topology = master-slave)

		$ dbdeployer --topology=master-slave replication 5.7.21
		# (explicitly setting topology)

		$ dbdeployer --topology=group replication 5.7.21
	

Flags:
  -h, --help              help for replication
  -n, --nodes int         How many nodes will be installed (default 3)
  -t, --topology string   Which topology will be installed (default "master-slave")

Global Flags:
      --bind-address string      defines the database bind-address  (default "127.0.0.1")
      --config string            config file (default "./dbdeployer.json")
  -p, --db-password string       database password (default "msandbox")
  -u, --db-user string           database user (default "msandbox")
      --gtid                     enables GTID
  -i, --init-options strings     mysqld options to run during initialization
      --keep-auth-plugin         in 8.0.4+, does not change the auth plugin
  -c, --my-cnf-options strings   mysqld options to add to my.sandbox.cnf
      --remote-access string     defines the database access  (default "127.%")
      --rpl-password string      replication password (default "rsandbox")
      --rpl-user string          replication user (default "rsandbox")
      --sandbox-binary string    Binary repository (default "$HOME/opt/mysql")
      --sandbox-home string      Sandbox deployment direcory (default "$HOME/sandboxes")

Sandbox management

You can list the available MySQL versions with

$ dbdeployer versions

Also "available" is a recognized alias for this command.

And you can list which sandboxes were already installed

$ dbdeployer installed 

The command "usage" shows how to use the scripts that were installed with each sandbox.

$ dbdeployer usage

	USING A SANDBOX

Change directory to the newly created one (default: $SANDBOX_HOME/msb_VERSION 
for single sandboxes)
[ $SANDBOX_HOME = $HOME/sandboxes unless modified with flag --sandbox-home ]

The sandbox directory of the instance you just created contains some handy 
scripts to manage your server easily and in isolation.

"./start", "./status", "./restart", and "./stop" do what their name suggests. 
start and restart accept parameters that are eventually passed to the server. 
e.g.:

  ./start --server-id=1001

  ./restart --event-scheduler=disabled

"./use" calls the command line client with the appropriate parameters,
Example:

    ./use -BN -e "select @@server_id"
	./use -u root

"./clear" stops the server and removes everything from the data directory, 
letting you ready to start from scratch. (Warning! It's irreversible!)

 USING MULTIPLE SERVER SANDBOX
On a replication sandbox, you have the same commands (run "dbdeployer usage single"), 
with an "_all" suffix, meaning that you propagate the command to all the members. 
Then you have "./m" as a shortcut to use the master, "./s1" and "./s2" to access 
the slaves (and "s3", "s4" ... if you define more).

In group sandboxes without a master slave relationship (group replication and 
multiple sandboxes) the nodes can be accessed by ./n1, ./n2, ./n3, and so on.

start_all
status_all
restart_all
stop_all
use_all
clear_all
m
s1, s2, n1, n2

The scripts "check_slaves" or "check_nodes" give the status of replication in the sandbox.

dbdeployer's People

Contributors

datacharmer avatar fipar avatar morgo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.