El script advenedizo no conoce el servicio mysql

I would create upstart script, which will flushing dirty pages from DB before shutdown. I use Ubuntu 14.04 and MariaDB. I start upstart script with this:

start on stopping mysql

script
    [something]
end script

but script returns:

start: Unknown job: on
Script started, file is typescript

But script does nothing... Where I have mistake? Can anybody help me, please? Ths ;)

preguntado el 28 de mayo de 14 a las 12:05

The script section is the problem, you need to show it to us. -

1 Respuestas

Guión:

#
# mysql-shutdown - This script clean innodb dirty pages
# from: http://www.mysqlperformanceblog.com/2009/04/15/how-to-decrease-innodb-shutdown-times/
#

start on stopping mysql
console output

script
    echo "Mysql-shutdown script start:"
    pct=0

    # Call the given function, require that it complete successfully, and then
    # return the status.
    rcall() {
        echo -n '+'
        echo -n $@
        $@
        status=$?

        if [ $status != 0 ]; then
            echo " FAILED"
            exit $status
        fi

        echo
        return $status
    }

    if [ "$1" = "--allow_dirty_buffers" ]; then
        pct=90
    fi

    innodb_status=$(echo "SHOW ENGINES;" | rcall mysql --user=root | grep InnoDB | cut -f2)
    if [ "$innodb_status" = "DISABLED" ]; then
        echo "The Innodb storage engine is disabled"
        exit 0
    fi

    # tell mysql that we need to shutdown so start flushing dirty pages to disk.
    # Normally InnoDB does this by itself but only when port 3306 is closed which
    # prevents us from monitoring the box.
    rcall mysql --user=root << EOF
    SLAVE STOP;
    SET GLOBAL innodb_max_dirty_pages_pct=$pct;
    EOF

    # ..... how wait until the dirty buffer size goes down to zero.
    IFS=
    if [ "$1" = "--progress" ]; then
        echo "Innodb dirty pages:"
        while [ true ]; do
            status=$(echo 'SHOW INNODB STATUS\G' | rcall mysql --user=root)
            modified_db_pages=$(echo $status | grep -E '^Modified db pages' | grep -Eo '[0-9]+$')

            if [ "$modified_db_pages" = "0" ]; then
                echo
                break
            fi

            echo -ne "$modified_db_pages\r";
            sleep 1
        done
    fi
end script

Respondido el 10 de junio de 14 a las 08:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.